Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Event повторно шлется c боками. (http://www.flasher.ru/forum/showthread.php?t=129730)

Alex Lexcuk 08.09.2009 22:06

Event повторно шлется c боками.
 
Че это за бок с самодельными событиями?
Код AS3:

package lex{
 
        import flash.events.Event;
 
        public class LexEvent extends Event {
 
                public static const FINISH:String = "finish";
 
                public var params:Object;
 
                public function LexEvent(_type:String, _params:Object) {
                        super( _type)
                        this.params = _params;
                }
 
                public override function toString():String {
                        return formatToString("CustomEvent", "params", "type", "bubbles", "cancelable");
                }
        }
}

вот так работает
Код AS3:

package  
{
        import flash.display.*;
        import flash.events.*;
        import lex.LexEvent;
        import flash.utils.*;
        import flash.system.*;
 
        public class Bugs extends MovieClip
        {
                private var fixEvt:LexEvent;
                private var finCount:uint;
                public function Bugs()
                {
                        fixEvt = new LexEvent(LexEvent.FINISH, { obj:this });
                        addEventListener(Event.ENTER_FRAME, enterFrameHandler);
                        addEventListener(LexEvent.FINISH, finishHandler);
                }
 
                private function finishHandler(evt:Object):void {
                        trace(getQualifiedClassName(evt));
                }
 
                private function enterFrameHandler(evt:Event):void {
                        fixEvt = new LexEvent(LexEvent.FINISH, { obj:this });
                        dispatchEvent(fixEvt);
                }
 
        }
 
}

показывает в трасе
Код:

lex::LexEvent
lex::LexEvent
lex::LexEvent

а теперь не будем каждый раз создавать LexEvent, а хочется брать уже готовый
Код AS3:

package  
{
        import flash.display.*;
        import flash.events.*;
        import lex.LexEvent;
        import flash.utils.*;
        import flash.system.*;
 
        public class Bugs extends MovieClip
        {
                private var fixEvt:LexEvent;
                private var finCount:uint;
                public function Bugs()
                {
                        fixEvt = new LexEvent(LexEvent.FINISH, { obj:this });
                        addEventListener(Event.ENTER_FRAME, enterFrameHandler);
                        addEventListener(LexEvent.FINISH, finishHandler);
                }
 
                private function finishHandler(evt:Object):void {
                        trace(getQualifiedClassName(evt));
                }
 
                private function enterFrameHandler(evt:Event):void {
                        dispatchEvent(fixEvt);
                }
 
        }
 
}

Побежали уже не ЛехЕвенты, а просто Евенты

Код:

flash.events::Event
flash.events::Event
flash.events::Event

И вот я думаю, а должно ли так быть?

r_r_f_r 08.09.2009 22:24

Код AS3:

                override public function clone():Event
                {
                        return new CustEvent(type,bubbles,cancelable);
                }


wvxvw 08.09.2009 22:24

Нужно оверрайдить clone()

PS. не успел :)

Alex Lexcuk 08.09.2009 23:46

Спасибо, теперь буду знать зачем нужно clone()

etc 09.09.2009 00:33

clone вообще всегда нужно описывать.


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

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