PDA

Просмотр полной версии : Как узнать координаты мувика относительно stage?


MakTpaxep
10.01.2011, 17:05
Как узнать координаты мувика относительно stage?

bav
10.01.2011, 17:06
myMovieClip.x
myMovieClip.yЕсли клип лежит на stage.

MakTpaxep
10.01.2011, 17:08
Нужно узнать внутри самого мувика. И этот вариант показыват координаты не относительно stage, а относительно родителя.

bav
10.01.2011, 17:08
А еще есть функция localToGlobal() (http://help.adobe.com/ru_RU/AS3LCR/Flash_10.0/flash/display/DisplayObject.html#localToGlobal%28%29).

MakTpaxep
10.01.2011, 17:31
Спасибо, Мужик=)

КорДум
10.01.2011, 18:01
А можно старым добрым способом:
var globalX:Number = parentClip.x + childClip.x;

Mur4ik
10.01.2011, 22:04
А можно старым добрым способом:
var globalX:Number = parentClip.x + childClip.x;

А если вложенность неизвестна или о ней знать не нужно?

КорДум
10.01.2011, 22:12
Mur4ik, а такого в вопросе не было оговорено ;)

Mur4ik
10.01.2011, 22:45
Mur4ik, а такого в вопросе не было оговорено ;)

Вот именно ;)

mikhailk
10.01.2011, 22:48
А если вложенность неизвестна или о ней знать не нужно?



private function getReallX(mc:Sprite) : int
{
if (mc) return (mc.x + getReallX(mc.parent as Sprite));
else return(0);
}

КорДум
10.01.2011, 22:54
А можно поизвращаться и сделать то же, что предложил mikhailk, но с рекурсией, чтобы шло до последнего родителя :D

mikhailk
10.01.2011, 22:58
у меня собственно, так и сделано
пока парент не станет нуллом

udaaff
10.01.2011, 22:58
private function getReallX(mc:Sprite) : int
{
if (mc) return (mc.x + getReallX(mc.parent as Sprite));
else return(0);
}


Зачем выражение после return брать в скобки?

mikhailk
10.01.2011, 23:03
просто привычка
по синтаксису не требуется
но и ошибкой не является

КорДум
10.01.2011, 23:11
пока парент не станет нуллом
А лучше, пока parent не станет равен экземпляру главного класса или стейджа даже...

mikhailk
10.01.2011, 23:32
А лучше, пока parent не станет равен экземпляру главного класса или стейджа даже...

так и случится
рекурсия дойдет до стейджа, у стейджа парента нет, раскрутится обратно и посчитается

Nemez
11.01.2011, 00:25
Скажите, if (mc) соответствует if (mc != null)?

mikhailk
11.01.2011, 00:26
соответствует

JackFromChaos
11.01.2011, 04:43
По моему считать глобальные координаты не совсем корректно. Если какие то из родительских символов трансформированы(ну вращение, там, или skiw), то координата посчитается не правильно...(имеется ввиду рекурсивный метод. localToGlobal считает естественно правильно. Ну или можно координаты на матрицы трансформации умножать, если сильно вручную хочется....)

КорДум
11.01.2011, 09:25
так и случится
Не совсем, будет совершен лишний заход в рекурсию в попытках отыскать родителя у стейджа.

Кроме того, localToGlobal должен быть еще и в разы быстрее, чем высокозатратная рекурсия. Будет очень сильно заметно, если каждый кадр (ну или по частому таймеру) высчитываются координаты сотен объектов.

mikhailk
11.01.2011, 11:55
офф: честно говоря, это было сделано для иллюстрации тезиса, что глубина заранее не известна

Mur4ik
11.01.2011, 14:33
Извращенцы :)
Видно что праздники и работать ааще не прет.