Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Вращение контейнера без вращения "детей". (http://www.flasher.ru/forum/showthread.php?t=138666)

inferrum 13.04.2010 17:28

Вращение контейнера без вращения "детей".
 
Собственно сабж.
Имеем мувиклип который вращается, надо подцепить к нему спрайт, чтобы при этом двигались они вместе, а вращался только мувик, а спрайт нет.
Можно ли это сделать без изменения структуры?Или придётся и мувик и спрайт пихать в новый контейнер?

Artic 13.04.2010 17:32

ну тут либо
1 вращать спрайт в обратную сторону
2 действительно спрайт поместить в другой контейнер и по например enterFrame, либо MouseMove, двигать в те же координаты спрайт, что и мувиклип

silin 13.04.2010 18:37

Цитата:

2 действительно спрайт поместить в другой контейнер и по например enterFrame, либо MouseMove, двигать в те же координаты спрайт, что и мувиклип
зачем в другой ? - "и мувик и спрайт пихать в новый контейнер", двигать общий, крутить кого надо..

Zebestov 13.04.2010 18:54

тут надо уточнять задачу. может оказаться, что речь идет о реализации чего-то подобного кабинкам на колесе обозрения. тогда другое. и подойдет ответ №1 у Arctic

Diestro 13.04.2010 19:12

Нужно к вращающемуся MovieClip добавить следующий код:
Код AS3:

override public function set rotation(value:Number):void{
        //поворачиваем детей в обратную сторону
        for (var i:int = 0; i < this.numChildren; i++){
                this.getChildAt(i).rotation = this.rotation - value;
        }
        super.rotation = value;
}

И как только поменяется переменная rotation у контейнера. Дети сами будут поворачиваться в обратную сторону на такой же угол.

inferrum 15.04.2010 01:38

Всем спасибо.Вариант Diestro оптимален.
Diestro
У меня вот так работает.
Код AS3:

override public function set rotation(value:Number):void{
        //поворачиваем детей в обратную сторону
        for (var i:int = 0; i < this.numChildren; i++){
                this.getChildAt(i).rotation =  - value;
        }
        super.rotation = value;
}


Diestro 15.04.2010 09:46

Ваш вариант будет работать если изначально у всех детей rotation = 0. Если нет, то прийдется считать дельту, как это я описал выше.


Часовой пояс GMT +4, время: 12:38.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.