Flash as3 понимая localToGlobal - PullRequest
9 голосов
/ 19 мая 2011

У меня просто небольшая проблема с пониманием функциональности FlashT localToGlobal. У меня есть мувиклип, который вложен во множество других мувиклипов. Когда щелкают по этому вложенному клипу, я хочу найти его положение и перемещать самый верхний содержащий клип на такое количество, чтобы вложенный клип находился в центре сцены (в основном у меня есть древовидная диаграмма и нужный эффект). является то, что treeContainer перемещается к нажатой «ветви» как центр сцены)

Итак, у меня есть это:

var treePoint = new Point (treeContainer.x,treeContainer.y); //since treePoint's parent is the stage, don't need global here.

var groupPoint = new Point (groupClip.x,groupClip.y);
var groupPointGlobal = groupClip.localToGlobal(groupPoint);
var stageCenter = new Point (int(stage.stageWidth/2),int(stage.stageHeight)/2);

var shiftAmount = ???

Спасибо за любую помощь, которую вы можете предоставить.

1 Ответ

23 голосов
/ 19 мая 2011

Положение x, y клипа всегда относительно его родителя.Поэтому, если он не является дочерним по отношению к сцене или если родитель имеет значение 0,0 - вы можете использовать localToGlobal, чтобы указать свое местоположение на сцене.

var globalPoint:Point = myClip.localToGlobal(new Point(0,0));

Это даст вам глобальную позицию этого клипа.,

Но, судя по звукам, вы хотите пойти другим путем и сделать globalToLocal правильно?

globalToLocal вернет локальную позицию, основанную на глобальном местоположении.

Поэтому, если вы хотите установить локальную позицию клипа, чтобы он располагался в центре экрана - давайте предположим, что это 320,240.

var localPoint:Point = myClip.parent.globalToLocal(new Point(320,240));
myClip.x = localPoint.x;
myClip.y = localPoint.y;

Мы используем родителя, потому что это будет клипотносительно.

имеет смысл?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...