PDA

Просмотр полной версии : Привязка мувиков


Ateist1630
29.12.2010, 21:26
День добрый, товарищи!
У меня есть мувик, который вращается курсором(назовём его 1) и простой бездействующий(назовём его 2). В 1 находится ещё один мувик(назовём его 3). Как мне программно сделать привязку 2 к 3, при том, что при вращении мышью 1, 2 остаётся лежать на 3 ?

mooncar
29.12.2010, 21:59
Как мне программно сделать привязку 2 к 3
Какой смысл вы вкладываете в эти слова?

Ateist1630
29.12.2010, 22:30
Мне нужно, чтобы мувик 2 был как бы прилеплен к мувику 3

goodguy
29.12.2010, 22:48
Вопрос из ряда: сначала расшифруй сам вопрос, а потом придумай как это реализовать :D

В 1 находится ещё один мувик(назовём его 3). Как мне программно сделать привязку 2 к 3
думаю, использовать для вычисления координат 3го функцию globalToLocal() а по этим координатам двигать 2й мувик. Если я понял правильно

iflamberg
29.12.2010, 22:51
Двигался вместе с ним, но не менял угол?

Ateist1630
29.12.2010, 23:43
Да уж, обьяснять я не умею XDDDD Я имел ввиду, что 2 должен накладываться на 3 и двигаться вместе с ним, извиняюсь, что сразу не смог растолковать XDDDD
А как globalToLocal использовать?

Bgg
30.12.2010, 00:02
Ну э, а может быть 2 вложить в 3?
mcTwo.addChild(mcThree);

Ateist1630
30.12.2010, 17:30
Что-то ничего не получается...

Добавлено через 1 час 23 минуты
Я начал искать информацию о globalToLocal, но ничего подходящего не нашёл, мне нужно, чтобы этот код находился в самом мувике, кодов в кадрах я избегаю, т.к. появляются проблемы, которые я до сих пор не смог решить...

rainbowrussia
30.12.2010, 19:41
Если бы точка привязки 2го и 3го мувика была в центре - то _width/2 и _height/2 в обоих местах можно было бы убрать. А так вот код:

onClipEvent (enterFrame) {
delta_x = this._x-_root.cross._x;
delta_y = this._y-_root.cross._y;
this._rotation = -Math.atan2(delta_x, delta_y)/(Math.PI/180);

var myPoint:Object = {x:three._x + three._width/2, y:three._y + three._height/2};
localToGlobal(myPoint);
_parent.two._x = myPoint.x - _parent.two._width/2;
_parent.two._y = myPoint.y - _parent.two._height/2;
}

Ateist1630
30.12.2010, 19:52
Большое спасибо! Очень помогли!:)

Добавлено через 27 минут
Вот ещё один вопрос, не сочтите за наглость:)
А если 2 должен ещё и вращаться вместе с 3 ?

rainbowrussia
30.12.2010, 20:32
Допустимо ли изменить точки привязки клипов (сделать их по центру, а не слева сверху)? Тогда их вращать проще будет.

Ateist1630
30.12.2010, 20:34
да, допустимо

rainbowrussia
30.12.2010, 23:34
Во вложении модифицированный исходник, а код после перенесения точек привязки стал вот такой:

onClipEvent (enterFrame) {
delta_x = this._x-_root.cross._x;
delta_y = this._y-_root.cross._y;
this._rotation = -Math.atan2(delta_x, delta_y)/(Math.PI/180);

var myPoint:Object = {x:three._x, y:three._y};
localToGlobal(myPoint);
_parent.two._x = myPoint.x;
_parent.two._y = myPoint.y;
_parent.two._rotation = this._rotation;
}


PS. На клипах тут писать не принято. Потом сложно отлаживать - непонятно где есть код, где нет.

Ateist1630
30.12.2010, 23:36
Спасибо большое! Вопросов больше нет:)

Добавлено через 4 минуты
Я стал писать в клипах после того, как у меня возникла большая проблема с onEnterFrame = function(), которую решить здесь так и не получилось.

rainbowrussia
31.12.2010, 05:31
Во вложении два варианта без кода на клипах.
Один с onEnterFrame, второй с onMouseMove.
Второй исполняет код только при изменении положения мыши.
Желаю удачи!

Ateist1630
31.12.2010, 09:41
Спасибо!:)