一個Flex程式最外層的DisplayObjectContainer叫做root
root是一個Sprite物件
你在Flex裡面所放的所有control物件都在root.application裡面
那個class之所以抓不到label的原因
是因為你直接寫label,程式會以為你是要找這個class的物件裡的label
帶是這個class又沒有定義label這個property,當然會出錯
有一個解決方式,就是在這個class定義多宣告一個變數
讓他成能夠得到Flex主程式的root reference
public var r:Sprite;
另外把change()改成這樣
public function change():void {
Sprite(this.r.application).label.text = "some text";
}
然後在主程式MXML裡面需要修改label的函式裡面寫
//假如你的class叫做MyClass
var obj:MyClass = new MyClass();
obj.r = root;
obj.change();
這樣就可以了
以上code沒有經過測試,可能有打錯字
不過理論上可行 :)
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 61.228.89.45