2011-01-14 2 views
0

У меня эта проблема здесь:dispatchEvent не работает в системе среднего класса

У меня есть 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, "")); 
     } 
+0

Можете ли вы показать код для actionObjets? – Taurayi

+0

actionObjet не делает много чего (и это большой ...), но я добавил код, где я его называю. Редактировать. – Elggetto

+0

Когда вы говорите, что это не работает, вы имеете в виду, когда вы используете метод addEventListener() actionObjet, событие, отправленное из actionObjet, не слышно? – Taurayi

ответ

0

Try и установка ваши классы, подобные следующим:

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

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 

, что должно Работа.