PDA

Просмотр полной версии : Логика работы localToGlobal


Оливер Перри
22.05.2009, 10:33
Собственно сам код.

_root.createEmptyMovieClip("empty_mc", 1);
_root.empty_mc.attachMovie("test_mc", "test_mc", 2, {_x:300, _y:300});

var crdOBJ:Object = {x:_root.empty_mc.test_mc._x, y:_root.empty_mc.test_mc._y};

_root.empty_mc.test_mc.localToGlobal(crdOBJ);

trace([_root._x,_root._y]);// Выводит 0,0
trace([_root.empty_mc._x,_root.empty_mc._y]);//Выводит 0,0
trace([_root.empty_mc.test_mc._x,_root.empty_mc.test_mc._y]);//Выводит 300,300
trace([crdOBJ.x,crdOBJ.y]);//Выводит 600,600

Вопрос.
Почему 600,600? а не 300,300

silin
22.05.2009, 10:48
потому что ты ищешь глобальные координаты точки (300,300)
т.е. 300 самого мувика+300 точки внутри него

Оливер Перри
22.05.2009, 18:08
Кажись дошло.
Получается что бы получить глобальные координаты test_mc я должен конвертировать клип в который он вложен empty_mc

var crdOBJ:Object = {x:_root.empty_mc.test_mc._x, y:_root.empty_mc.test_mc._y};

_root.empty_mc.localToGlobal(crdOBJ);

silin
22.05.2009, 18:58
или относительно test_mc, но начало координат т.е.(0,0)
var crdOBJ:Object = { x:0, y:0 };
_root.empty_mc.test_mc.localToGlobal(crdOBJ);

Patriot_ap
03.06.2009, 14:00
Спасибо