2010-09-26 3 views
0

J'ai une instance sur ma scène que j'ai tirée de ma bibliothèque au moment du design. Cette instance est liée à une classe personnalisée dont le constructeur prend un argument.Comment transmettre des arguments pour mettre en scène des instances dans ActionScript 3?

package 
{ 
    import flash.display.MovieClip; 
    import flash.media.Sound; 

    public class PianoKey extends MovieClip 
    { 
     var note:Sound; 

     public function PianoKey(note:Sound) 
     { 
      this.note = note; 
     } 
    } 
} 

Il est évident que, en essayant d'exécuter le code comme il est donne l'erreur de comptage d'argument suivant:

ArgumentError: Error #1063: Argument count mismatch on PianoKey(). Expected 1, got 0.

Est-il possible de définir des arguments sur une instance qui a été traîné manuellement à la scène?

Répondre

1

Ceci peut vous aider. Juste peu de changements sont nécessaires dans la classe personnalisée

package 
{ 
    import flash.display.MovieClip; 
    import flash.media.Sound; 

    public class PianoKey extends MovieClip 
    { 
     var note:Sound; 

     public function PianoKey(note:Sound=null) 
     { 
      if(note!=null) 
      { 
       this.note = note; 
      } 
     } 
    } 
} 
1

Je pense que la seule façon de le faire est de faire un composant PianoKey. Cela aura des propriétés de composant qui peuvent être définies. Ils sont une vraie douleur à mettre en place cependant.

1

Pourquoi ne pas utiliser un setter à la place?

 
package 
{ 
    import flash.display.MovieClip; 
    import flash.media.Sound; 

    public class PianoKey extends MovieClip 
    { 
     var _note:Sound; 

     public function PianoKey() 
     { 
     } 

     public function set note(value:Sound) 
     { 
      this._note = value; 
     } 
    } 
} 
+0

J'espérais faire tout en un seul coup pour simplifier le code instanciation, mais oh bien. – Soviut

Questions connexes