Erreur 1009 en actionscript 3.0 sur une animation de bouton fait en clip

Résolu
TheBuzzer Messages postés 19 Date d'inscription mercredi 23 août 2006 Statut Membre Dernière intervention 25 août 2009 - 30 avril 2008 à 06:58
TheBuzzer Messages postés 19 Date d'inscription mercredi 23 août 2006 Statut Membre Dernière intervention 25 août 2009 - 30 avril 2008 à 08:16
Je travaille présentement en Actionscript 3.0 dans la CS3 de Adobe, j'ai une erreur 1009 lorsque je demande à mon script dans mon clip utilisé comme bouton de sortir de l'animation et aller dans une section fixe comme si mon script tentait toujours d'exécuter l'event ENTER_FRAME. Pourtant je demande à mon clip d'aller plus loin lorsque je clique mais il semble tenter de nouveau à faire une action ENTER_FRAME mais les objets ne sont plus là car j'ai fait déplacé ailleurs dans le timeline du clip. Est-ce qu'il y a un moyen de mettre fin à cette event ENTER_FRAME?

En faite, le code fait vibrer chacune des lettres par un nombre aléatoire pour simuler la vibration des lettres lorsque l'on met le curseur sur le bouton et lorsque l'on sort, ça arrête mais mon problème survient lorsque je clique que je change d'endroit dans ma timeline  principale et lorsque je fait la même chose sur le clip.

Voici le code de la timeline principale et après le code du clip...

Timeline principale:
import flash.events.MouseEvent;
import flash.net.navigateToURL;
import flash.net.URLRequest;
import flash.net.URLRequestMethod;
import flash.net.URLVariables;

btnHisto.addEventListener(MouseEvent.MOUSE_UP, btnHisto_MU);
btnHisto.addEventListener(MouseEvent.ROLL_OVER, btnHisto_ROVER);
btnHisto.addEventListener(MouseEvent.ROLL_OUT, btnHisto_ROUT);
                                     
                                     
function btnHisto_MU (evt:MouseEvent):void {
//    delete clipHisto.everyFrame <= = Suggestion testée mais qui ne fonctionne pas
    clipHisto.gotoAndPlay(16);
    _global.MenuItem = 1;
    gotoAndPlay(100);
}

function btnHisto_ROVER (evt:MouseEvent):void {
    clipHisto.gotoAndPlay(6);
}

function btnHisto_ROUT (evt:MouseEvent):void {
    clipHisto.gotoAndPlay(1);
}

Code du Clip :

import flash.events.Event;
import flash.events.ProgressEvent;

this.addEventListener(Event.ENTER_FRAME, everyFrame);
//this.addEventListener(ErrorEvent.ERROR, btnError);

function btnError(event:ErrorEvent):void {
    gotoAndPlay(16);
}

function everyFrame(event:Event):void {
    var tempOffset:Number, Mvt:Number = 2;
    tempOffset = (Math.random()*Mvt)-(Mvt/2);
    Histo1.x = HistoCoord[0][0] + tempOffset;
    tempOffset = (Math.random()*Mvt)-(Mvt/2);
    Histo1.y = HistoCoord[0][1] + tempOffset;
    tempOffset = (Math.random()*Mvt)-(Mvt/2);
    Histo2.x = HistoCoord[1][0] + tempOffset;
    tempOffset = (Math.random()*Mvt)-(Mvt/2);
    Histo2.y = HistoCoord[1][1] + tempOffset;
    tempOffset = (Math.random()*Mvt)-(Mvt/2);
    Histo3.x = HistoCoord[2][0] + tempOffset;
    tempOffset = (Math.random()*Mvt)-(Mvt/2);
    Histo3.y = HistoCoord[2][1] + tempOffset;
    tempOffset = (Math.random()*Mvt)-(Mvt/2);
    Histo4.x = HistoCoord[3][0] + tempOffset;
    tempOffset = (Math.random()*Mvt)-(Mvt/2);
    Histo4.y = HistoCoord[3][1] + tempOffset;
    tempOffset = (Math.random()*Mvt)-(Mvt/2);
    Histo5.x = HistoCoord[4][0] + tempOffset;
    tempOffset = (Math.random()*Mvt)-(Mvt/2);
    Histo5.y = HistoCoord[4][1] + tempOffset;
    tempOffset = (Math.random()*Mvt)-(Mvt/2);
    Histo6.x = HistoCoord[5][0] + tempOffset;
    tempOffset = (Math.random()*Mvt)-(Mvt/2);
    Histo6.y = HistoCoord[5][1] + tempOffset;
    tempOffset = (Math.random()*Mvt)-(Mvt/2);
    Histo7.x = HistoCoord[6][0] + tempOffset;
    tempOffset = (Math.random()*Mvt)-(Mvt/2);
    Histo7.y = HistoCoord[6][1] + tempOffset;
    tempOffset = (Math.random()*Mvt)-(Mvt/2);
    Histo8.x = HistoCoord[7][0] + tempOffset;
    tempOffset = (Math.random()*Mvt)-(Mvt/2);
    Histo8.y = HistoCoord[7][1] + tempOffset;
    tempOffset = (Math.random()*Mvt)-(Mvt/2);
    Histo9.x = HistoCoord[8][0] + tempOffset;
    tempOffset = (Math.random()*Mvt)-(Mvt/2);
    Histo9.y = HistoCoord[8][1] + tempOffset;
    tempOffset = (Math.random()*Mvt)-(Mvt/2);
    Histo10.x = HistoCoord[9][0] + tempOffset;
    tempOffset = (Math.random()*Mvt)-(Mvt/2);
    Histo10.y = HistoCoord[9][1] + tempOffset;
}

Merci à l'avance!

Marc,
Programmeur Web,
Zzyb Web Design & Design Graphique
www.zzyb.biz

1 réponse

TheBuzzer Messages postés 19 Date d'inscription mercredi 23 août 2006 Statut Membre Dernière intervention 25 août 2009
30 avril 2008 à 08:16
J'ai trouvé ma réponse, au cas où quelqu'un aurait le même problème, on
doit ajouter la commande
clip.removeEventListner(Event.FRAME_ENTER,clip.nomdelafonction); dans
l'event du MOUSE_UP pour éviter qu'il tente un autre event avant de
déplacer le pointeur dans le clip.

Merci pareil!

Timeline principale:
import flash.events.MouseEvent;
import flash.net.navigateToURL;
import flash.net.URLRequest;
import flash.net.URLRequestMethod;
import flash.net.URLVariables;

btnHisto.addEventListener(MouseEvent.MOUSE_UP, btnHisto_MU);
btnHisto.addEventListener(MouseEvent.ROLL_OVER, btnHisto_ROVER);
btnHisto.addEventListener(MouseEvent.ROLL_OUT, btnHisto_ROUT);
                                     
                                     
function btnHisto_MU (evt:MouseEvent):void {
//    delete clipHisto.everyFrame <= = Suggestion testée mais qui ne fonctionne pas
    clipHisto.removeEventListener(Event.ENTER_FRAME, clipHisto.everyFrame); <== Ca fonctionne avec cette ligne!!!
    clipHisto.gotoAndPlay(16);
    _global.MenuItem = 1;
    gotoAndPlay(100);
}

function btnHisto_ROVER (evt:MouseEvent):void {
    clipHisto.gotoAndPlay(6);
}

function btnHisto_ROUT (evt:MouseEvent):void {
    clipHisto.gotoAndPlay(1);
}

Marc,
Programmeur Web,
Zzyb Web Design & Design Graphique
www.zzyb.biz
3
Rejoignez-nous