2009-04-23 6 views
2

Ich habe eine benutzerdefinierte Klasse in Actionscript definiert und ich möchte eine Instanz davon im Hauptdokument der Flash-Anwendung erstellen. Doch nach dem Konstruktor mit einem Argumente aufrufen, Blitz gibt mir diese Fehlermeldung:Konstruktor Argumente Problem ActionScript 3

Error #1063: Argument count mismatch on coa.application::MenuItem(). Expected 1, got 0. 

Das ist meine Klasse:

public class MenuItem extends MovieClip{ 
    var button:SimpleButton; 

    public function MenuItem(buttonLoc:uint) { 

     button = new InvBtn(); 
     this.addChild(button); 
     button.x=-81; 
     button.y=buttonLoc*33; 
     button.addEventListener(MouseEvent.CLICK, mybringToFront); 
    } 
} 

Und das ist mein Versuch, den Konstruktor zu nennen:

var menu1:MovieClip = new MenuItem(3); 

Irgendeine Idee, was ist falsch?

+0

Es hat keinen Sinn zu MovieClip- einziehe MenuItem zurück, versuchen Sie: var menu1: MenuItem = new MenuItem (3); – Soviut

Antwort

3

Entschuldigung, kann ich noch nicht kommentieren, oder ich würde dies in einen Kommentar setzen.

Sind Sie sicher, dass:

var menu1: MovieClip- = new MenuItem (3);

ist der einzige Ort, an dem Sie ein neues MenuItem konstruieren? Sie haben nicht zufällig die MenuItem-Klasse an einige Instanzen auf der Bühne angeschlossen?

änderte ich Ihren Code zu dieser (nur so konnte ich es laufen) und es funktioniert gut:

package{ 
    import flash.display.MovieClip; 
    import flash.display.SimpleButton; 
    import flash.events.MouseEvent; 
    public class MenuItem extends MovieClip{ 

      var button:SimpleButton; 

      public function MenuItem(buttonLoc:uint) { 

        button = new SimpleButton(); 
        this.addChild(button); 
        button.x=-81; 
        button.y=buttonLoc*33; 
        button.addEventListener(MouseEvent.CLICK, mybringToFront); 
      } 

      public function mybringToFront(event:MouseEvent):void{ 
       trace('blah'); 
      } 
    } 
} 
+0

oops, ja, du hast recht, es gab eine Instanz dieses Symbols auf der Bühne, aber ich habe es erst bemerkt, als ich das gelesen habe;) thanxalot – Dungeo

1

Wie quoo sagte, die meisten wahrscheinlich, dass Sie eine Instanz des Objekts haben, dass die Klasse auf angebracht ist Bühne. Um dies zu testen für das tun:


public class MenuItem extends MovieClip{ 
     var button:SimpleButton; 

     // I changed it to int, cuz uint is extremely slow for any math 
     // other than bitwise operators, int is fast as long as no fractions 
     public function MenuItem(buttonLoc:int = -1) { 
       if (buttonLoc == -1) 
        trace("On stage instance found! Location: "+x+", "+y); 

       button = new InvBtn(); 
       this.addChild(button); 
       button.x=-81; 
       button.y=buttonLoc*33; 
       button.addEventListener(MouseEvent.CLICK, mybringToFront); 
     } 
}