2017-11-11 1 views
-1

nicht steuern Ich habe ein Symbol (MovieClip) in meiner FLA-Datei erstellt und es dem Rahmen hinzugefügt. Dann habe ich ihm Instanznamen Panel auf Eigenschaften geben: „myMC“Ich kann MovieClip in der Bühne von AS3-Klassendatei

Dann versuchte, es zu kontrollieren aus meiner Klasse-Datei im Verzeichnis: root \ Test \ MyClass.as

package Test { 
    import flash.display.MovieClip; 

    public class MyClass extends MovieClip{ 
     public function MyClass() { 
      var myMC:MovieClip = getChildByName("myMC") as MovieClip; 
      myMC.gotoAndStop(2); 
     } 
    } 
} 

Danach wird importiert, um die Klasse zu fla und versuchte zu laufen:

import Test.MyClass; 
var LaunchMyClass:MyClass = new MyClass(); 

und diese Fehlermeldung erhalten,

TypeError: Error #1009: Cannot access a property or method of a null object reference. 

at Test::MyClass() 
at Test_fla::MainTimeline/frame1() 

Bitte beachte, dass ich cont bin versucht zu rolle einen MovieClip bereits in der Bühne ein und rufe ihn nicht aus der Bibliothek auf.

Antwort

2

Vor allem immer die Fehlermeldungen, die Sie mit Ihrer Frage erhalten. Macht die Dinge leichter.

Aber jetzt lassen Sie sich in Ihrem Skript aussieht:

Ich habe ein Symbol (MovieClip-) in meiner fla-Datei und hinzugefügt, um es an den Rahmen. Dann füge ich es als Kind addChild(myMC);

verwenden, wenn Sie es auf die Bühne gestellt und gab den MovieClip- ein Instancename gibt es keine Notwendigkeit addChild zu nennen.

In as3 ist es bequem, Klassennamen mit einem Großbuchstaben zu beginnen, also nennen Sie es myClass statt myClass.

Ihrem Paket fehlt die Konstruktorfunktion, der Name für die Funktion muss den gleichen Namen haben wie der Name der Klasse und der Dateiname .as.

die getChildByName() Methode erwartet einen String, so haben Sie myMc in Anführungszeichen

package { 
    import flash.display.MovieClip; 


    public class MyClass extends MovieClip { 

     // Constructor 
     public function MyClass() { 
      // constructor code 
      var myMC:MovieClip = getChildByName("myMC") as MovieClip; 
      myMC.gotoAndStop(2); 
     } 
     // End Constructor 
    } 

} 
+0

Ich habe versucht zu wickeln, was Sie sagen und es mit einem anderen Problem kommen. Bearbeitete die Post für detaillierte Informationen. – theRaggedyMan

+0

Nun gut, ich dachte, Sie verwenden MyClass.as als die Dokumentklasse Ihrer Fla. was genau versuchen Sie zu erreichen und was ist der Zweck von MyClass? @theRaggedyMan – Patang

+0

Ich versuche, einen Filmclip in der Szene mit MyClass zu steuern. Ich habe ein komplexes Spiel mit vielen Movieclips init. Ich habe sie von Fla-Datei gesteuert, aber der Code wurde chaotisch in der Zeit, so dass ich meinen Code mit Klassen trennen möchte. – theRaggedyMan

Verwandte Themen