PDA

Просмотр полной версии : Как прилепить один мувик к мувику вложенному в другой.


Viktorcor
08.05.2010, 22:06
Привязать мувик(mc1) к мувику(mc2) у меня получается без проблем.
На подобе этого кода:

_root.mc1._x = _root.mc2._x;
_root.mc1._y = _root.mc2._y;

Но если я пытаюсь копировать положение мувика(mc2a), который вложен в другой(mc2), то естественно копируется не глобальное положение мувика(mc2a), а положение по координатам мувика(mc2) в который он вложен.
тобишь так уже не работет:
_root.mc1._x = _root.mc2.mc2a._x;
_root.mc1._y = _root.mc2.mc2a._y;

Ладно бы если бы только положение беда в том что мувик (mc2) вращаться как колесо, а к одной из точек колеса надо приклеить другой мувик(mc1) - это я для примера.

Может есть какое решение?

AS Super
08.05.2010, 22:26
Возможно, не совсем правильно понял постановку вопроса.
Относительное положение можно легко превращать в глобальное сложением координат:
mc2aglobalx = mc2._x + mc2a._x;

Т.е., исправляя твой код, получится:
_root.mc1._x = _root.mc2._x + _root.mc2.mc2a._x;
_root.mc1._y = _root.mc2._y + _root.mc2.mc2a._y;

Вычеслять эту точку можно таким же способом.

mooncar
08.05.2010, 22:31
Для этого есть методы MovieClip.localToGlobal и MovieClip.globalToLocal.
Смотрите хелп.

Viktorcor
08.05.2010, 23:33
Тупо сложение к сожалению не поможет надо учитывать вращение мувика(mc2).
А остальное посмотрим спасибо!)

Tails
09.05.2010, 00:06
Viktorcor
Тоже парился когдато над такойже ситуацией :)

http://www.flasher.ru/forum/showthread.php?t=121735

Viktorcor
09.05.2010, 18:11
:) Ооо круто! сейчас попробую. Спасибо!))

Viktorcor
09.05.2010, 20:08
Вообщем всё получилось, вот такой код в итоге:
// на сцене 2 клипа:
// 1-ый с названием Fire и 2-ой с названием bahna, также внутри второго имееться клип FirePoint

// вращение мувика bahna плюс цикл с функцией задержки.
setInterval(cor,10);

function cor() {
_root.xm = _root._xmouse;
_root.ym = _root._ymouse;
_root.bahna._rotation = _root.ym * (1);

// САМА ФУН-ИЯ
function getXandY() {
// пифагор
dlina=Math.sqrt(((targetClip._y*targetClip._y)+(targetClip._x*targetClip._x)));
// ugol
delta_x = -targetClip._x;
delta_y = -targetClip._y;
ugol = (-Math.atan2(delta_x, delta_y)/(Math.PI/180))-90;
//raschet
resultX=targetClipRoditel._x+ (dlina*Math.cos((targetClipRoditel._rotation+ugol)*(Math.PI/180)));
resultY =targetClipRoditel._y+ (dlina*Math.sin((targetClipRoditel._rotation+ugol)*(Math.PI/180)));
resultRotation=targetClipRoditel._rotation;
}
//
//
// Теперь пробуем её использовать
// Задаём ей цель
targetClipRoditel = _root["bahna"];
targetClip=targetClipRoditel["FirePoint"];
// Врубаем фун-ию
getXandY();
// Функция выводит нам нужные кординаты, которые в последущем можно свободно использовать, например так:
_root.Fire._x=resultX;
_root.Fire._y=resultY;
_root.Fire._rotation=resultRotation;
}

Tails
:) - Спасибо большое выручил.! )