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

ZergMaster 15.04.2010 16:34

Переходим из фрэймов в классы.
 
Здравствуйте люди добрые!=)

Очень жажду начать программировать в отдельных .as файлах, но все боюсь начать. Осознаю преимущества программирования классами - это и сокращение кода, и динамичность, и лаконичность, и более быстрая работа... Посему прошу провести со мной маленький урок, что займет у вас несколько минут а полезен будет, думаю, многим новичкам)

допустим у нас есть простой код-обработчик кнопок, написанный в 1-м фрэйме, а в библиотеке лежат две кнопки: StartGameButton и HelpButton.

Код AS3:

var rooter = stage;
 
var startButt:MovieClip = new StartGameButton();
addChild(startButt);
startButt.x = 50;
startButt.y = 350;
startButt.enable = true;
 
var helpButt:MovieClip = new HelpButton();
addChild(helpButt);
helpButt.x = 500;
helpButt.y = 350;
helpButt.enable = true;
 
 
_ButEvent(startButt);
_ButEvent(helpButt);
 
 
function _ButEvent(mc)
{
        if(mc.enable)
        {
                mc.useHandCursor = true;
                mc.buttonMode = true;
                mc.addEventListener(MouseEvent.MOUSE_DOWN, butHandlerDOWN)
 
 
                function butHandlerDOWN(e:Event):void
                {
                  e.target.gotoAndStop(2)
                  rooter.addEventListener(MouseEvent.MOUSE_UP, butHandlerUP)
                }
 
                function butHandlerUP(e:Event):void
                {
                  mc.gotoAndStop(1)
                  rooter.removeEventListener(MouseEvent.MOUSE_UP, butHandlerUP)
                  _butHandlerCLICK(mc);
                }
 
        } else {
                        mc.gotoAndStop(3)
                        trace('button disable')
                        }//end if(mc.enable)
 
 
}
 
 
 
 
function _butHandlerCLICK(target)
{
        switch (target)
    {
            case startButt:
                        {
                                trace(m)
                                break;
                        }
            case helpButt:
                        {
                                trace(m)
                                break;
                        }
        } //end switch
 
}

Код состоит из двух функций - _ButEvent, что навешивает на кнопки листенеры down-up-click
и функции _butHandlerCLICK , которая проверяет, какая кнопка была нажата и выполняет действия.

так вот вопрос. Приведите пожалуйста на этом коде пример, как разделить его на, допустим, три .as файла - main, ButEvent и butHandlerCLICK ?

wvxvw 15.04.2010 21:04

Из вашего кода не понятно каким образом кнопки могут поменять состояние enabled / disabled. А так, ну вот, наверное...
Код AS3:

package tests 
{
        //{ imports
        import flash.display.MovieClip;
        import flash.display.Sprite;
        import flash.events.Event;
        import flash.events.MouseEvent;
        import flash.utils.Dictionary;
        //}
 
        /**
        * ButtonsExample class.
        * @author wvxvw
        * @langVersion 3.0
        * @playerVersion 10.0.32
        */

        public class ButtonsExample extends Sprite
        {
                //--------------------------------------------------------------------------
                //
                //  Protected properties
                //
                //--------------------------------------------------------------------------
 
                protected var _buttons:Dictionary = new Dictionary();
 
                //--------------------------------------------------------------------------
                //
                //  Constructor
                //
                //--------------------------------------------------------------------------
 
                public function ButtonsExample()
                {
                        super();
                        var startButt:MovieClip = new StartGameButton();
                        super.addChild(startButt);
                        startButt.x = 50;
                        startButt.y = 350;
                        this._buttons[startButt] = true;
                        startButt.addEventListener(MouseEvent.MOUSE_DOWN, this.mouseUpDownHandler);
 
                        var helpButt:MovieClip = new HelpButton();
                        super.addChild(helpButt);
                        helpButt.x = 500;
                        helpButt.y = 350;
                        this._buttons[helpButt] = true;
                        helpButt.addEventListener(MouseEvent.MOUSE_DOWN, this.mouseUpDownHandler);
                }
 
                //--------------------------------------------------------------------------
                //
                //  Protected methods
                //
                //--------------------------------------------------------------------------
 
                protected function mouseUpDownHandler(event:MouseEvent):void
                {
                        var m:MovieClip = event.target as MovieClip;
                        if (!this._buttons[m])
                        {
                                trace("Button disabled");
                                return;
                        }
                        switch (event.type)
                        {
                                case MouseEvent.MOUSE_DOWN:
                                        m.gotoAndStop(2);
                                        break;
                                case MouseEvent.MOUSE_UP:
                                        m.gotoAndStop(1);
                                        break;
                        }
                }
        }
}

Соответсвенно импорт нужно дописать, если нужно.


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

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