Форум 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=136402)

TonKhaO 16.02.2010 16:21

Эффект вращения, как лучше сделать?
 
Вот что получается http://undersky.ru/accord/flashka.html
Делаю эффект вращения картинки по наводу мышки, вот код, почему то 1-2 раза все прокручивается а потом наметво встает, я делал вот так код, сперва 2 слушателя на навод мышки а внутри функции слушателя еще слушатель enterFrame у которого своя функция :quiet:

Код AS3:

stop();
 
goForward.addEventListener(MouseEvent.MOUSE_OVER, goingForward);
 
function goingForward(event:MouseEvent):void {
 
    event.target.addEventListener(Event.ENTER_FRAME, everyFrameAhead);
 
        function everyFrameAhead(event:Event):void {
 
                    nextFrame();
 
                }
 
}
 
 
 
 
goBack.addEventListener(MouseEvent.MOUSE_OVER, goingBack);
 
function goingBack(event:MouseEvent):void {
 
    event.target.addEventListener(Event.ENTER_FRAME, everyFrameBack);
 
        function everyFrameBack(event:Event):void {
 
                    prevFrame();
 
                }
 
}


gloomyBrain 16.02.2010 17:06

1) Слушатель нужно добавлять не кнопке, а спрайту с картинкой (то есть мувик нужно положить в спрайт) или самому мувику
2) Удаляйте слушатель EnterFrame после отведения мыши от кнопки

TonKhaO 16.02.2010 17:20

Цитата:

Сообщение от gloomyBrain (Сообщение 886994)
1) Слушатель нужно добавлять не кнопке, а спрайту с картинкой (то есть мувик нужно положить в спрайт) или самому мувику

вы имеете виду что спрайт это однокадровый мувик? или это это на программное исполнение как то влияет что у меня кнопка является мувиком?

Добавлено через 7 минут
Вот так? :-)

Код AS3:

stop();
 
goForward.addEventListener(MouseEvent.MOUSE_OVER, goingForward);
goForward.addEventListener(MouseEvent.MOUSE_OUT, deleteLis1);
 
function goingForward(event:MouseEvent):void {
 
    event.target.addEventListener(Event.ENTER_FRAME, everyFrameAhead);
 
        function everyFrameAhead(event:Event):void {
 
                    nextFrame();
 
                }
 
}
 
function deleteLis1(event:MouseEvent):void {
 
        removeEventListener(Event.ENTER_FRAME)
 
}
 
 
goBack.addEventListener(MouseEvent.MOUSE_OVER, goingBack);
goBack.addEventListener(MouseEvent.MOUSE_OUT, deleteLis2);
 
function goingBack(event:MouseEvent):void {
 
    event.target.addEventListener(Event.ENTER_FRAME, everyFrameBack);
 
        function everyFrameBack(event:Event):void {
 
                    prevFrame();
 
                }
 
}
 
function deleteLis2(event:MouseEvent):void {
 
        removeEventListener(Event.ENTER_FRAME)
 
}


gloomyBrain 16.02.2010 19:04

Цитата:

это это на программное исполнение как то влияет что у меня кнопка является мувиком?
Нет, никак не влияет

Судя по всему, Вы пишите код в кадрах. Согласно концепции данного форума - это мировое зло! =) Так что завязывайте с этим, пишите основной класс проекта, через него будет проще ориентироваться во всех этих листенерах и т.д.

Допустим, у вас на сцене есть мувик (вот эта самая прокрутка, где каждый кадр - картинка). Чтобы обратиться к нему из основного класса, используйте такой код:
Код AS3:

package {
 
        import flash.display.MovieClip;
        import flash.display.Sprite;
 
        /**
        * ...
        * @author gloomyBrain
        */

 
        public class Main extends Sprite {
 
                public var myScroll:MovieClip;
 
                public function Main():void {
 
                        myScroll = this.getChildByName("вот тут имя прокрутки на сцене") as MovieClip;
 
                        // то же самое и с кнопками
                        //...
 
                        // при нажатии на кнопку выполняем вот такой код
                        this.myScroll.addEventListener(Event.ENTER_FRAME, ...);
 
                }
 
        }
 
}

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


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

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