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

TuMko 05.06.2013 20:05

Автоматическое перемещение граф. элементов
 
Вложений: 1
По первому клику по кнопке (черный квадрад внизу) ручка (деталь выше) должна перемещаться вправо, достугнув определенного значения по Х, должна возвращаться влево в начальное состояние, после чего опять перемещаться вправо и .д., пока не будет нажата снова кнопка (черный квадрад внизу). После повторного надания кнопки ручка должна остановиться. И уже при следующем нажатии на кнопку должна опять перемещаться в автоматическом режиме, описанном выше. Как это реализовать? Мне удалось сделать, чтобы по клику на кнопку, ручка перемещалась в одну сторону, по повторному клику по кнопке - возвращалась в исходную позицию.

Код AS3:

package 
{
        import flash.display.*;
        import flash.events.*;
        import flash.text.*;
        import flash.utils.*;
        import mx.events.ModuleEvent;
 
        import flash.filters.BitmapFilterQuality;
        import flash.filters.BlurFilter;
 
        /**
        * ...
        * @author miato
        */

        public class Main extends Sprite
        {
                private var detal1handle:Sprite = new Sprite();
                private var detal4start:Sprite = new Sprite();
                private var timer:Timer;
                private var timer1:Timer;
                private var IsDetal4start:Boolean = false;
 
                public function Main():void
                {
                        detal1handle.graphics.lineStyle(1);              //
                        detal1handle.graphics.beginFill(0xCCCCCC, 1);     
                        detal1handle.graphics.drawRect(96, 112, 87, 6);    //  ДЛИНА
                        detal1handle.graphics.beginFill(0x999999, 1);     
                        detal1handle.graphics.drawRect(153, 110, 7, 10);
                        detal1handle.graphics.beginFill(0x000000, 1);
                        detal1handle.graphics.drawRect(160, 100, 30, 30);
                        detal1handle.graphics.endFill();
 
                        detal4start.graphics.lineStyle(1);                  // кнопка запуска
                        detal4start.graphics.beginFill(0x000000, 1);     
                        detal4start.graphics.drawRect(85, 225, 15, 30);
                        detal4start.graphics.endFill();
//                        detal4start.y = 260;
 
                        addChild(detal1handle);
                        detal1handle.x = 290;
                        detal1handle.y = 60;
 
                        addChild(detal4start);
                        detal4start.x = 525;
                        detal4start.y = 170;
 
                        detal4start.addEventListener(MouseEvent.CLICK, airStart);
                }
 
                private function airFeeding (e:MouseEvent):void {
 
                        IsDetal4start = false;
 
                }
 
                private function airStart (e:MouseEvent):void {
                        timer = new Timer(50, 0);
                        timer.addEventListener(TimerEvent.TIMER, moveAirStartButton);
                        timer.start();
 
                        IsDetal4start = true;
                        airWork();
                }
 
                private function airStartRevers (e:MouseEvent):void {
                        timer = new Timer(50, 0);
                        timer.addEventListener(TimerEvent.TIMER, moveAirStartButton);
                        timer.start();
 
                        IsDetal4start = true;
                        airWorkRevers();
                }
 
                private function moveAirStartButton(e:TimerEvent):void
                {
                        if (detal4start.x <= 525) {
                                detal4start.x -= 10;
                                if (detal4start.x < 510) {
                                        detal4start.x = 525;
                                        timer.stop();
                                }
                                e.updateAfterEvent(); // обновляем экран после выхода из этой функции
                        }
//                        else {
//                                timer.stop();
//                        }
                        trace(detal4start.x);
                }
 
                private function airWork ():void {
                        if (IsDetal4start) {
                                timer1 = new Timer(50, 0);
                                timer1.addEventListener(TimerEvent.TIMER, moveAirHandle);
                                timer1.start();
                        }
                }
 
                private function airWorkRevers ():void {
                        if (IsDetal4start) {
                                timer1 = new Timer(50, 0);
                                timer1.addEventListener(TimerEvent.TIMER, moveAirHandleRevers);
                                timer1.start();
                        }
                }
 
                private function moveAirHandle (e:TimerEvent):void
                {
                        if (detal1handle.x < 340) {
                                detal1handle.x += 10;
                                if (detal1handle.x < 340) {
                                        detal1handle.x = 340;
                                } else if (detal1handle.x > 340) {
                                        detal1handle.x = 340;
                                        trace(detal1handle.x);
                                }
                                e.updateAfterEvent(); // обновляем экран после выхода из этой функции
                        }
                        else {
                                timer1.stop();
                        }
 
 
                        detal4start.removeEventListener(MouseEvent.CLICK, airStart);
                        detal4start.addEventListener(MouseEvent.CLICK, airStartRevers);
 
                }
 
                private function moveAirHandleRevers (e:TimerEvent):void
                {
                        if (detal1handle.x > 290) {
                                detal1handle.x -= 10;
                                if (detal1handle.x > 290) {
                                        detal1handle.x = 290;
                                } else
                                if (detal1handle.x < 290) {
                                        detal1handle.x = 290;
                                        trace(detal1handle.x);
                                }
                                e.updateAfterEvent(); // обновляем экран после выхода из этой функции
                        }
                        else {
                                timer1.stop();
                        }
 
                        detal4start.removeEventListener(MouseEvent.CLICK, airStartRevers);
                        detal4start.addEventListener(MouseEvent.CLICK, airStart);
                }
 
        }
 
}


KumoKairo 05.06.2013 20:15

Советую скачать TweenLite и забить анимацию в твины


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

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