得到適當的類,我試圖取代通過拖放到動畫片段通過Flash的IDE與實際類,所以我可以將它們添加到遊戲循環,讓他們作爲實際的實體創建的實例。換句話說,我試圖創建一種簡化的方式,讓開發人員可以將他們的實體可視化地添加到我正在處理的平臺引擎中。無法從Flash IDE
這是我的第三次嘗試,我完全卡住了。
下面的代碼遍歷包含有鏈接到它命名MyEntity
類導出的符號影片剪輯。但是,它失去了對BaseClass
的擴展,因此在編譯時不會移動。
它繼承:MovieClip > BaseClass > MyEntity
。但是,使用IDE進行編譯時,它忽略了BaseClass,並且只是MovieClip > MyEntity
。
我的代碼旨在查找並存儲MyEntity
的位置,將它從容器movieclip中移除,並添加一個全新的實例(基礎適當),然後將該新實例設置爲原始位置。
for (var i:int = 0; i < LayerInIDE.numChildren; i++)
{
// first we want to get all the display objects in the layer
// these are objects that were placed from within the Flash IDE (ie. dragged and dropped into the MovieClip
var original:DisplayObject = LayerInIDE.getChildAt(i);
// we want to get the class of the display object so we can recreate it as a specific entity class that it
var originalName:String = getQualifiedClassName(original);
var originalClass:Class = getDefinitionByName(originalName) as Class;
// debug trace, see output below
trace(originalName, originalClass, originalClass is BaseClass);
// filter out movieclips
if (originalClass != MovieClip)
{
// remove the original
LayerInIDE.removeChild(original);
// recreate the class with the correct extension
var newEnt = originalClass();
newEnt.x = original.x; newEnt.y = original.y;
LayerInIDE.addChild(newEnt);
}
}
這不起作用。
它輸出Game.entities::MyEntity [class MyEntity] false
。 MyEntity是一個適當的類,並從BaseClass擴展。但是,問題是IDE奇怪地刪除了對基類的引用 - 就像MyEntity從未擁有基類一樣。我似乎無法重新創建它,因爲獲取對類的引用也返回MyEntity從來沒有BaseClass。但是,如果我輸入var newEnt = MyEntity();
而不是通過getDefinitionByName
獲取類名,它將正常工作並從BaseClass擴展。
我需要它從BaseClass的延伸,因爲這是主類在我的遊戲引擎所有的實體需要使用。
任何想法?或者,還有更好的方法?
您的鏈接屬性對於庫中的MyEntity剪輯的外觀如何?你能上傳截圖嗎?你如何創建你的班級的第一個對象? – pkyeck
當然,以下是[MyEntity](http://i.imgur.com/BUWBN.png)的屬性窗口的外觀。這裏還有[MyEntity的代碼](http://i.imgur.com/6c8RV.png)和[BaseClass](http://i.imgur.com/qiOho.png)。爲了證明這個問題,這些被削減。這是[LayerInIDE包含](http://i.imgur.com/j3fKD.png)。 在進一步研究這個問題後,我相信這是獲得課程的一個問題。它似乎放棄了對象的所有屬性。 – MacDGuy
您可以嘗試將MyEntity設置爲BaseClass,並將任何內容設置爲「Class」。 – pkyeck