2011-07-01 2 views
1

ici est ma classe jusqu'à présent:AS2: classe ne fonctionne pas

class com.RCN.Menu.Menu extends MovieClip { 

    public var title:String; 
    public var menuItems:Array; 
    public var titleField:MovieClip; 

    public function Menu(title:String, menuItems:Array, menuActions:Array) { 
     this.titleField = createTitleBar(title); 
    } 

    public function createTitleBar(title:String) { 
     var titleBar = createEmptyMovieClip("titleBar", 1); 
      var titleText = createTextField("titleText", this.getNextHighestDepth(), 10, 10, 100, 100); 
      titleText.text = title; 
      titleText.autoSize = true; 
      titleText.multiline = false; 
      titleText.wordWrap = false; 
      titleText.border = true; 
      titleText.background = 0xffffff; 
      var format:TextFormat = new TextFormat(); 
      format.font = "Arial"; 
      format.size = 14.5; 
      format.bold = true; 
      format.align = "left"; 
      titleText.setTextFormat(format); 
      return titleBar; 
    } 
} 

Pourtant, dans mon SWF quand je lance le code suivant je reçois défini, quelqu'un peut-il voir pourquoi? (Nouveau aux classes)

import com.RCN.Menu.Menu; 

var Accountability:Menu = new Menu("hello",[a,b,c,d]); 
trace(Accountability.titleField); 

Merci

Répondre

1

Votre appel à createEmptyMovieClip échoue parce qu'il n'y a pas d'étape pour créer un MovieClip sur. Considérez cet exemple simple de la façon de le faire sans y attacher votre classe à un élément de la bibliothèque:

Classe:

class MyMenu extends MovieClip { 

    public var titleField:MovieClip; 

    public function MyMenu($target:MovieClip) { 
     this.titleField = createTitleBar($target); 
    } 

    public function createTitleBar($target:MovieClip):MovieClip { 
     var titleBar = $target.createEmptyMovieClip("titleBar", 1); 
     return titleBar; 
    } 
} 

IDE:

import MyMenu; 
var menu:MyMenu = new MyMenu(this); 
trace(menu.titleField);