2013-06-02 5 views
0

Je suis tout nouveau dans ActionScript et c'est l'un de mes premiers "scripts" par moi-même alors pardonnez-moi si cela est évident.Actionscript 3: Appel à la méthode non définie

J'ai un MovieClip avec le nom "Smiley"

et voici mon actionscript dans cadre 1 de la actions couche

stage.addEventListener(MouseEvent.MOUSE_MOVE, mousePosition); 

var smiley:MovieClip = addChild(new Smiley) as MovieClip; // **ERROR HERE** 
stage.addEventListener(MouseEvent.MOUSE_DOWN,toggleSmiley); 
stage.addEventListener(MouseEvent.MOUSE_UP,toggleSmiley); 

function mousePosition(event:MouseEvent) { 
smiley.x = mouseX; smiley.y = mouseY; 

} 

function toggleSmiley(e:MouseEvent):void 
{ 
    smiley.visible = (e.type == MouseEvent.MOUSE_DOWN); 
    } 

Voir la ligne marquée « ERREUR ICI " ci-dessus, c'est où Flash jette l'erreur.
Je reçois cette erreur:

Scene 1, Layer 'actions', Frame 1, Line 6 1180: Call to a possibly undefined method Smiley.

Am confus quant à l'endroit où le problème. Merci d'avance.

Répondre

2

Votre "Smiley" n'a pas été associé à ActionScript. Il n'existe pas, pour autant que votre script le sache.

Dans la bibliothèque, dans les propriétés des symboles de "Smiley", cochez "Export for ActionScript".

+0

Perfecto! Merci beaucoup! :) – Ryan

0

Dans votre bibliothèque, vous devez exporter votre Smiley pour Actionscript. Ouvrez votre bibliothèque, sélectionnez le carré et sélectionnez les "propriétés" en faisant un clic droit ou en appuyant sur cmd + clic. Tournez la section "Avancé" si elle n'est pas déjà ouverte, puis sélectionnez "Exporter pour Actionscript". Dans le champ "Classe" vous devriez voir le même nom que dans la bibliothèque "Smiley". Cela crée sa propre classe qui a les propriétés du clip que vous avez conçu dans Flash. Sous ce champ, vous verrez "Base Class", et il devrait avoir "flash.display.MovieClip". Cela signifie que votre Smiley est déjà un MovieClip, et il est juste étendu pour être un type spécial spécial maintenant appelé Smiley, donc vous n'aurez pas à le déclarer comme un MovieClip dans votre code lorsque vous l'instanciez, car un Smiley est déjà un MovieClip.

Maintenant, retournez à vos actions, et vous changer la ligne que vous instancier avec à:

var smiley:Smiley = new Smiley(); 
addChild(smiley); 

En général, vous voulez appeler le constructeur d'une classe de première, à savoir: « nouveau Smiley() ", puis ajoutez-le à la liste d'affichage, plutôt que d'essayer de tout faire en même temps.

Questions connexes