我結束了以下問題很困惑,並會是比較清楚感激。的ActionScript - 動態添加屬性雪碧
一般來說,我是如何工作的,包括在Flash Authoring中設計我的所有圖形,通過將基類更改爲flash.display.Sprite將它們轉換爲Sprite符號,給出我的實例名稱並最終將它們導出到ActionScript。
的方法實際上允許我上,我已經出口到ActionScript中,就好像他們是影片剪輯實例我Sprite實例動態創建的代碼性能。我不完全確定爲什麼我能夠做到這一點,但我可以。在輪詢對象以確定它們的超類時,它們確實是Sprites而不是MovieClip。
然而,一如預期,如果我編程從頭代碼的新精靈,並嘗試動態屬性添加到新的編程精靈將導致編譯時錯誤。
package
{
import flash.display.Sprite;
import flash.utils.getQualifiedSuperclassName;
public class Document extends Sprite
{
public function Document()
{
trace(getQualifiedSuperclassName(blueOvalInstance));
//flash.display::Sprite (it's not a MovieClip)
trace(blueOvalInstance.hasOwnProperty("currentFrame"));
//false (ok, ok, it's definately not a MovieClip)
blueOvalInstance.myNewProperty = true;
//dynamically added boolean property on a Sprite instance
trace(blueOvalInstance.hasOwnProperty("myNewProperty"));
//true. fancy that! my Flash Authoring exported Sprite has a dynamically added property
codeSprite();
}
private function codeSprite():void
{
var myCodedSprite:Sprite = new Sprite();
myCodedSprite.graphics.beginFill(0xFF0000);
myCodedSprite.graphics.drawRect(0, 0, 100, 100);
myCodedSprite.graphics.endFill();
addChild(myCodedSprite);
myCodedSprite.anotherNewProperty = true;
//dynamically added boolean property on a Sprite instance, just like before!
//Compile Time Error!!!
//1119: Access of possibly undefined property anotherNewProperty through a reference with static type flash.display:Sprite.
}
}
}
那麼,爲什麼它可以動態我添加屬性出口精靈在我的文檔類,如果他們沒有影片剪輯,而我不能,如果我在代碼中創建他們自己?
下面的圖像顯示一個新的符號BlueOval出口到的ActionScript從Flash創作與基類的Sprite(未影片剪輯)的。請注意庫面板中的新綠色(而不是藍色)彩色「影片剪輯」圖標。
,你說我上面列出的被自動定義這些基類實例作爲動態的方法? – TheDarkIn1978 2010-09-26 09:33:55
是的,因爲你沒有通過調用新的Sprite()來實例化它們,通過超類如何被列爲Sprite來判斷,Flash id動態地創建了一個對象,我相信它也是動態的。) – Aaron 2010-09-26 15:51:19
humm ...我剛剛意識到如果上述方法嵌套在其他精靈中,則上述方法無法工作(無法向精靈添加屬性)。它似乎只能用於顯示列表中索引0的精靈。 – TheDarkIn1978 2010-09-26 19:30:29