2012-08-16 58 views
0

我在嘗試編輯容器精靈中的MovieClip類實例內的變量的值時出現問題。AS3:更改精靈內部對象的變量

的影片剪輯是精靈「容器」的所有孩子,但是當我試圖通過循環將它們與container.getChildAt(i).variable = value;在for循環內我得到的錯誤 -

Scene 1, Layer 'AS', Frame 1, Line 87 1119: Access of possibly undefined property name_ through a reference with static type flash.display:DisplayObject. 

如何修改這些變量?出了什麼問題?

回答

3

最有可能的問題是getChildAt()返回一個DisplayObject。 DisplayObject不是一個動態類,這意味着你不能任意創建和訪問變量。另一方面MovieClip是一個動態類,所以你可以創建和訪問任意變量,就像你正在做的那樣。問題是,即使知道你正在訪問的對象是一個MovieClip,但Flash並不知道這一點,並將你限制在DisplayObject的能力之中,正如前面提到的那樣,getChildAt()返回的是這個能力。

爲了解決這個問題,您必須明確地讓Flash知道您正在處理的對象是一個MovieClip。

MovieClip(container.getChildAt(i)).variable = value; 

既然你現在讓閃存知道,對象將是一個影片剪輯,你可以採取的事實,影片剪輯是一個動態類的優勢,並訪問您的變量:這是通過什麼知道的鑄造完成。

+0

完美解答+1。 – 2012-08-16 02:42:05

+0

在假設子類是MovieClip類型之前,您還會想要(容器.getChildAt(i)是MovieClip)執行操作,否則會出現類型強制錯誤。我假設你正在循環因爲我變量的孩子。 – Jordan 2012-08-16 05:43:28

+0

完美工作,謝謝!我會牢記未來,以及:) – 2012-08-16 06:34:16