2009-02-16 46 views
1

我正在使用Flash CS3和ActionScript 2.我有一個MovieClip符號(標識爲「MySymbol」),其中包含帶有標識符「innerText」的動態文本塊。符號被標記爲「爲ActionScript導出」使用下面的「MySymbol.as」文件:如何從外部類訪問MovieClip符號中的動態文本?

 
class MySymbol extends MovieClip 
{ 
     function SetText(text) 
     { 
       innerText.text = text; 
     } 
} 

在幀動作,我試着做以下幾點:

 
var symInst = _root.attachMovie("MySymbol", "MySymbol" + _root.getNextHighestDepth(), _root.getNextHighestDepth()); 
symInst.SetText("hi"); // Fails 
symInst.innerText.text = "hi"; // Works 

我得到的編譯錯誤:

There is no property with the name 'innerText'.

爲什麼我可以從框架的行動訪問的innerText,但不能引用它。至於內部文件本身?

回答

2

您正在收到編譯器錯誤,因爲在編譯時「innerText」對該類不可用(即,它在運行時處可用)。

一個快速的解決辦法是使用的

this['innerText'].text = text; 

代替

innerText.text = text; 
+0

嘿,這很好,謝謝 雖然,有人可能會說編譯器應該知道屬性,因爲它可以訪問所有的信息。 ,做什麼可以給你 – PeteVasi 2009-02-17 00:20:22

1

我猜的文本字段 「的innerText」 用在Flash CS3文本工具創建的。如果是這種情況,那麼編譯器在一定程度上知道它,因爲它需要從.FLA文件中獲取關於在舞臺上需要創建什麼元素的信息,或者需要在庫中放置什麼樣的符號。

要從您的類訪問該屬性,您需要在類中爲其定義一個變量,即使它在技術上是該MovieClip的一部分。

嘗試修改你的類是這樣的:

class MySymbol extends MovieClip 

{

private var innerText:TextField; 

    function SetText(text) 
    { 
      innerText.text = text; 
    } 

}

通過在類中添加了的innerText聲明,編譯器將肯定知道它看起來對於假設財產存在,就像它與['innerText']一樣。 (雖然這仍然是訪問該屬性的有效方式)

相關問題