2011-07-01 5 views
1

を働いていないクラスは今のところ私のクラスである:私は、次のコードを実行するとAS2:ここ

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; 
    } 
} 

しかし、私のSWFでは、私は未定義の取得、誰もがなぜ見ることができますか?

import com.RCN.Menu.Menu; 

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

おかげ

(クラスに新しい)

答えて

1

上のムービークリップを作成するには、何のステージが存在しないため、createEmptyMovieClipへのあなたの呼び出しが失敗しています。

クラス::

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); 
ライブラリ項目にあなたのクラスを装着せずにこれを行う方法のこの単純な例を考えてみましょう