AS3 : TypeError: Error #1010

Résolu
cs_Yode Messages postés 30 Date d'inscription lundi 24 mars 2003 Statut Membre Dernière intervention 25 avril 2009 - 21 avril 2009 à 14:36
cs_Yode Messages postés 30 Date d'inscription lundi 24 mars 2003 Statut Membre Dernière intervention 25 avril 2009 - 21 avril 2009 à 15:39
Bonjour,

Je suis en train de passer doucement de l'AS2 à l'AS3, et bien sur, ça ne se fait pas sans mal !

Voici mon problème : j'ai une animation, qui se déroule, puis :
- charge un SWFexterne via la fonction loadRotation();
- refais passer au premier plan les items de menu qui sont "sous" ce SWF externe, via la fonction pushTop();
- lance la lecture du SWF externe (que je veux aussi pouvoir controller de façon plus avancée par la suite, mais si au moins je pouvais lancer la lecture, ce serait déjà pas mal !) via la fonction avance();

Lorsque je teste mon anim', tout se passe très bien, jusqu'à ce que j'appelle la fonction avance(); où j'ai alors l'errerur :
TypeError: Error #1010: Un terme n'est pas défini et n'a pas de propriété.
    at index_fla::MainTimeline/avance()
    at index_fla::MainTimeline/frame277()

Ca va faire deux jours que je m'arrache les cheveux sur cette anim', si quelqu'un peut me dépanner ce serait vraiment top.
Je vous donne mon code ci-dessous, merci d'avance !

function loadRotation() {
    var loader:Loader = new Loader();
    loader.load(new URLRequest("../vidz/vid_rotation.swf"));
    loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onComplete);
    function onComplete(event:Event):void {
        var externalMovie=MovieClip(loader.content);// cast 'DisplayObject' to 'MovieClip'
        addChild(externalMovie);// add your swf directly to the stage
        auTop();
    }
}

function auTop() {
    var myTimer:Timer=new Timer(1,1);
    myTimer.addEventListener("timer", pushTop);
    myTimer.start();
}

function pushTop(e:Event):void {
    var maxIndex:Number=this.numChildren-1;
    trace("GO TOP ="+maxIndex);
    this.setChildIndex(menu8 as MovieClip, maxIndex);
    this.setChildIndex(menu9 as MovieClip, maxIndex);
    this.setChildIndex(menu10 as MovieClip, maxIndex);
}

function avance() {
    this.externalMovie.play();
}

6 réponses

Orange73 Messages postés 1375 Date d'inscription dimanche 28 novembre 2004 Statut Membre Dernière intervention 2 août 2011
21 avril 2009 à 14:59
Hello,

je pense que le probleme vient de là :

var externalMovie=MovieClip(loader.content);// cast 'DisplayObject' to 'MovieClip'

car tu declare cette var dans une fonction donc
function avance() {
    this.externalMovie.play();
}
ne trouve plus externalMovie

-- Orange73 --
"L'homme n'est pas fait pour travailler, la preuve c'est que cela le fatigue" (Voltaire)
3
Orange73 Messages postés 1375 Date d'inscription dimanche 28 novembre 2004 Statut Membre Dernière intervention 2 août 2011
21 avril 2009 à 15:19
Tu n'as qu'as declarer ta var externalMovie en dehors de tes fonctions.

var externalMovie:MovieClip;

function loadRotation() {
    var loader:Loader = new Loader();
    loader.load(new URLRequest("../vidz/vid_rotation.swf"));
    loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onComplete);
    function onComplete(event:Event):void {
        externalMovie=MovieClip(loader.content);// cast 'DisplayObject' to 'MovieClip'
        addChild(externalMovie);// add your swf directly to the stage
        auTop();
    }
}

function auTop() {
    var myTimer:Timer=new Timer(1,1);
    myTimer.addEventListener("timer", pushTop);
    myTimer.start();
}

function pushTop(e:Event):void {
    var maxIndex:Number=this.numChildren-1;
    trace("GO TOP ="+maxIndex);
    this.setChildIndex(menu8 as MovieClip, maxIndex);
    this.setChildIndex(menu9 as MovieClip, maxIndex);
    this.setChildIndex(menu10 as MovieClip, maxIndex);
}

function avance() {
    this.externalMovie.play();
}

-- Orange73 --
"L'homme n'est pas fait pour travailler, la preuve c'est que cela le fatigue" (Voltaire)
3
cs_Yode Messages postés 30 Date d'inscription lundi 24 mars 2003 Statut Membre Dernière intervention 25 avril 2009
21 avril 2009 à 15:12
Hum, ok en effet, tu as raison c'est bien ça qui semble clocher.

Cependant, je n'arrive pas à comprendre comment je peux faire de ce movieClip quelque chose de "manipulable". A la base j'essayais de manipuler l'objet "loader" puis j'ai trouvé (ici) qu'il fallait le cast pour dire à flash que le "displayObject" était en fait un "movieClip" afin de pouvoir le manipuler.

C'est donc ce que j'ai fait, mais finalement, je n'ai fais que déplacer le problème. Je pensais qu'avec le "addChild(externalMovie);" il y aurait bien une instance de "externalMovie" sur mon Stage, auquel je pourrai donner des instructions (de bêtes "gotoAndPlay"). Mais que nenni, c'est encore plus complexe.

Si quelqu'un sait comment me sortir de là, je suis preneur ! Merci.
0
cs_Yode Messages postés 30 Date d'inscription lundi 24 mars 2003 Statut Membre Dernière intervention 25 avril 2009
21 avril 2009 à 15:24
Ho merci ! merci !

C'était pourtant pas siii compliqué.... Je me demande si j'arriverai un jour à bien comprendre dans son ensemble le fonctionnement de cet coquin d'AS3.

En tous cas tout fonctionne parfaitement maintenant, merci encore !
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Orange73 Messages postés 1375 Date d'inscription dimanche 28 novembre 2004 Statut Membre Dernière intervention 2 août 2011
21 avril 2009 à 15:30
De rien...

"Je me demande si j'arriverai un jour à bien comprendre dans son ensemble le fonctionnement de cet coquin d'AS3."

Pourtant c'est la meme chose en AS2

-- Orange73 --
"L'homme n'est pas fait pour travailler, la preuve c'est que cela le fatigue" (Voltaire)
0
cs_Yode Messages postés 30 Date d'inscription lundi 24 mars 2003 Statut Membre Dernière intervention 25 avril 2009
21 avril 2009 à 15:39
Bon ben j'suis mal barré alors :p

Plus sérieusement, je me suis mis depuis peu à l'AS3, et je suis encore perdu par tous ces events, eventListeners et autres nouveautés à gérer. Un bon vieux "onRelease" placé sur un bouton ça me convenait bien !

Pareil pour la gestion des _level, j'adorais ça et ça me régalait de jouer sur plein de movies indépendants à partir de frames, de boutons, de clips...

Ceci dit, si je comprends bien les gros progrès d'optimisation que représentent l'AS3 : avant Flash faisait un tas de choses bien souvent inutiles même quand on ne lui demandait rien. Maintenant il ne fait rien sans qu'on lui demande (et qu'on lui montre comment faire, quel noob !) J'imagine qu'il faut "juste" que je reprenne mes marques avec la syntaxe.

En attendant j'ai du bookmark ce forum !
0
Rejoignez-nous