dispatchEvent не работает во втором классе - PullRequest
0 голосов
/ 14 января 2011

У меня есть эта проблема здесь:

У меня есть SWF с именем Application.swf , который загружает другой SWF с именем jeu.swf .
Мой основной класс(не знаю, как это назвать хаха), называется Main.as .Другой класс называется actionObjets.as

Когда я звоню: dispatchEvent(new MicroJeuEvent(MicroJeuEvent.JEU_TERMINE, 8, "")); (Предоставлено моим учителем), он отлично работает из Main.as, он отлично работает.

Но когда я вызываю его из actionObjets, он не работает.Также без ошибок.

Я пытался поместить эту строку в статическую функцию, тоже не работает.

Почему я могу отправлять Событие из моего основного класса, а не из другого?Я не программист, и я просто не понимаю некоторые основные принципы as3.Есть ли способ сделать по-другому?Это так, я нехорошо и мне нужно знать, что именно делать!ха-ха.Спасибо!

/*--Finir Jeu--*/
        public function finirJeuFonction(methode, points):void{
            var faceDeGagner:Array = new Array("Vous êtes mort","Vous avez sauté par la fenêtre","Vous avez éteind le feux","Vous avez tiré votre soeur déguisée en zombie","Votre soeur aime se déguiser en zombie","Vous avez exterminé l'homme louche");

            switch(monterJeu._Difficulte){
                case 0:
                    _creationObjet.fenetreMobilier.parent.removeChild(_creationObjet.fenetreMobilier);
                    _creationObjet.armoireMobilier.parent.removeChild(_creationObjet.armoireMobilier);
                    break;
                case 1:
                    _creationObjet.zombieMobilier.parent.removeChild(_creationObjet.zombieMobilier);
                    _creationObjet.litMobilier.parent.removeChild(_creationObjet.litMobilier);
                    _creationObjet.tablePCMobilier.parent.removeChild(_creationObjet.tablePCMobilier);
                    _creationObjet.coffreMobilier.parent.removeChild(_creationObjet.coffreMobilier);
                    break;
                case 2:
                    _creationObjet.armoireCoteMobilier.parent.removeChild(_creationObjet.armoireCoteMobilier);
                    _creationObjet.litMobilier.parent.removeChild(_creationObjet.litMobilier);
                    _creationObjet.hommeMobilier.parent.removeChild(_creationObjet.hommeMobilier);
                    _creationObjet.C4Mobilier.parent.removeChild(_creationObjet.C4Mobilier);
                    _creationObjet.boutonC4Mobilier.parent.removeChild(_creationObjet.boutonC4Mobilier);
                    break;
            }
            _creationObjet._creationBackground.getBackgroundStage.parent.removeChild(_creationObjet._creationBackground.getBackgroundStage);
            //Chronometre.horloge.stop();

            _creationObjet.messageFinMC.visible = true;
            _creationObjet.messageFinMC.nbrePointsTxt.text = points;
            _creationObjet.messageFinMC.messageFinTxt.text = faceDeGagner[methode];

            dispatchEvent(new MicroJeuEvent(MicroJeuEvent.JEU_TERMINE, 8, ""));
        }

1 Ответ

0 голосов
/ 14 января 2011

Попробуйте и настройте ваши классы, как показано ниже:

В главном классе ...

package 
{
    import com.ActionObjets;
    import flash.display.Sprite;
    import flash.events.Event;

    public class Main extends Sprite
    {
        public function Main()
        {
            init();
        }

        private function init():void
        {
            var actionObjets:ActionObjets = new ActionObjets();
            actionObjets.addEventListener(Event.COMPLETE, completeHandler);
            actionObjets.finirJeuFonction(); 

        }// end function

        private function completeHandler(e:Event):void
        {
            trace("complete");

        }// end function

    }// end class

}// end package

и в классе ActionObjets:

package com
{
    import flash.events.EventDispatcher;
    import flash.events.Event;

    public class ActionObjets extends EventDispatcher
    {
        public function ActionObjets() {} // end function

        public function finirJeuFonction():void 
        {
            dispatchEvent(new Event(Event.COMPLETE, true));

        }// end function

    }// end class

}// end package

это должно работать.

...