Проблема зацикливания в AS3 при использовании ROLL_OVER - PullRequest
0 голосов
/ 07 июня 2011

Так что в основном я пытаюсь создать баннер, который добавляет и удаляет фрагмент ролика в ROLL_OVER и ROLL_OUT с помощью кнопки. У меня есть созданный видеоклип и кнопка, и она работает нормально, если я использую только ROLL_OVER. Как только я добавляю eventListener для ROLL_OUT, он зацикливает функции, как сумасшедшие, и видеоклип продолжает мигать. Я знаю, что упускаю что-то простое, но не могу сообразить, что. Вот код:

       var MySmiles:smilesEvery=new smilesEvery();

       buttonSmiles_btn.addEventListener(MouseEvent.ROLL_OVER, smiles, false, 0, true);
       function smiles(myevent:MouseEvent):void {
         this.addChild(MySmiles);
       };
       buttonSmiles_btn.addEventListener(MouseEvent.ROLL_OUT, smilesOUT, false, 0, true);
       function smilesOUT(myevent:MouseEvent):void {
        this.removeChild(MySmiles);
       };

Есть мысли?

Ответы [ 2 ]

0 голосов
/ 23 июня 2011

Мое предположение: при пролонгации вы показываете клип, который перекрывает вашу кнопку.Следовательно, вы получаете немедленное развертывание на кнопку.Что, в свою очередь, заставляет вашу кнопку снова перевернуться.Это вызывает рекурсивное переполнение стека.:)

Если вышеприведенное верно, просто отключите мышь на MySmiles.MouseChidren и mouseEnabled.

0 голосов
/ 07 июня 2011

удаление слушателей может помочь:

var MySmiles: smilesEvery = new smilesEvery ();

   buttonSmiles_btn.addEventListener(MouseEvent.ROLL_OVER, smiles, false, 0, true);

   buttonSmiles_btn.mouseChildren = false //to be shure, that one of the childs interfire with mouse events

   function smiles(myevent:MouseEvent):void {
     this.addChild(MySmiles);
     buttonSmiles_btn.addEventListener(MouseEvent.ROLL_OUT, smilesOUT, false, 0, true);
   };
   function smilesOUT(myevent:MouseEvent):void {
    buttonSmiles_btn.removeEventListener(MouseEvent.ROLL_OUT, smilesOUT, false,0,true);
    this.removeChild(MySmiles);
   };
...