2010-02-03 24 views
0

我有點困惑。我做了一個按鈕符號,並且放了一個名爲「butLabel」的文本框。此按鈕被封裝到另一個名爲MainMenu的動畫片段中。 cbegin是我給按鈕的實例名稱。如果我這樣跟蹤....誤解按鈕和文本框

trace(menu.cbegin); 

它認識到cbegin是一個按鈕。但如果我這樣跟蹤它

trace(menu.cbegin.butLabel); 

它說butLabel爲空。下面是我如何調用上的菜單影片剪輯

var menu = new MainMenu(); 
trace(menu.cbegin.butLabel); 
menu.x = sr.stageWidth/2; 
menu.y = sr.stageHeight/2; 

同樣,按鈕的作品,但相應的按鈕犯規的內側的標籤。 textfield設置爲動態,並且我將實例名稱字段中的名稱複製並粘貼到我的代碼中。所以他們必須是一樣的。我也開始在庫中默認的文本字段中輸入單詞按鈕,它似乎工作正常,但如果我通過代碼更改文本字段,它不起作用。任何關於發生了什麼的建議?謝謝!

+0

你能提供更多測試代碼嗎? – 2010-02-03 18:39:13

+0

你嘗試過'menu.butLabel'嗎? – 2010-02-03 18:41:49

回答

1

這是你可以做的,它有點駭人聽聞。

注意:這假設TextField位於第二層(即getChildAt(1)),高於您製作SimpleButton時創建的初始圖層。

var menu:MainMenu = new MainMenu(); 
addChild(menu); 

var upStateContainer:DisplayObjectContainer = menu.cbegin.upState as DisplayObjectContainer; 
var butLableUp:TextField = upStateContainer.getChildAt(1) as TextField; 
butLableUp.text = "Up State"; 

或作爲一個襯裏:

((menu.cbegin.upState as DisplayObjectContainer).getChildAt(1) as TextField).text = "UP State"; 

說明: 當閃光從閃光IDE,使用SimpleButton的所有實例,和他們的孩子編譯,被轉換爲它們的基的顯示類型,像Sprites。即使您在跨越全部四個框架的按鈕狀態上的圖層上有一個文本框,也會爲這3個可見按鈕狀態中的每一個生成文本框。文本字段的實例名稱甚至不重要,並且從不使用。

+0

我不完全明白你說的是什麼但它有效!看起來你的看法是,在編譯期間,所有包含simpleButton對象的對象都變成了displayObjectContainers。哪些顯示對象相當差勁(即輕量級的空顯示對象)。因此失去了文本等屬性。因此這就是爲什麼它沒有工作。我們只是拿着並鑄造了對象回到一個文本框?這僅適用於SimpleButtons嗎?並非常感謝! – numerical25 2010-02-03 20:01:36