(注意,沒有什麼真正的「錯誤」在這裏與我的代碼(在這個意義上,它的作品),但更想知道它是如何工作的,什麼是引擎蓋下發生)作爲Sprite轉換時,Movieclip會發生什麼?
目前,我有兩個庫,每個庫都有一個對象。一個是「Apple」類,另一個是「Pear」,它們位於不同的外部swf中。
蘋果的基類是影片剪輯的內容明智它是一個影片剪輯:具有幀+動畫
這裏是我用來創建和顯示蘋果MovieClip對象的代碼:
function getClip(inputName, spriteLibrary:Loader):MovieClip {
var aClass:Class = spriteLibrary.contentLoaderInfo.applicationDomain.getDefinition(inputName) as Class;
return (MovieClip) (new aClass());
}
this.addChild(getClip("Apple", referenceToTheLoadedSwfThatHasAppleInIt));
的上面的作品很好,蘋果出現在舞臺上並播放。
但是,梨的基類是一個雪碧(沒有動畫,框架等)。所以上述失敗,因爲該方法應該返回一個MovieClip。
this.addChild(getClip("Pear", referenceToTheLoadedSwfThatHasPearInIt));
我想了一會兒,我將不得不有兩個版本的上述方法,一個用於Sprite和一個用於MovieClip。不過,剛看到,我把它改成雪碧,並試圖創建蘋果:
function getClip(inputName, spriteLibrary:Loader):Sprite {
var aClass:Class = spriteLibrary.contentLoaderInfo.applicationDomain.getDefinition(inputName) as Class;
return (Sprite) (new aClass());
}
this.addChild(getClip("Apple"), referenceToTheLoadedSwfThatHasAppleInIt);
this.addChild(getClip("Pear"), referenceToTheLoadedSwfThatHasPearInIt);
現在既會工作,但有趣的是,我發現,即使該方法返回一個雪碧,蘋果似乎仍然正常工作和戲劇它是舞臺上的動畫。我可以將其轉換爲MovieClip並訪問所有與MovieClip相關的屬性等等。
我的問題是,當蘋果「存在」爲雪碧時,它發生在所有與MovieClip相關的「東西」上,並且在使用影片剪輯和精靈時通常會遇到這種情況(通過假裝你只有當你需要它時,纔會有精靈並投射到影片剪輯)
我明白了,所以根據我的使用方式,將事情保持在最簡單的形式是件好事。有趣的是你提到了健康酒吧,因爲這是一款遊戲,而我剛剛做的是從主fla中刪除所有嵌入式npc和項目精靈,以便從單獨的swf庫中進行外部加載(NPC在動畫時不會有物品)。有助於瞭解底下發生的事情,也很好地瞭解未來的重點。謝謝。 – mitim