我正在用AS3,Flixel和組件/實體系統(是的,所有在同一時間)和我的實體(它是FlxSprite的子類)沒有被正確添加(即根本沒有)。我花了兩個小時才找到了違規線路。如果我刪除它,遊戲的其餘部分就會愉快地出現。AS3對象索引導致Flixel不當行爲 - 此代碼有什麼問題?
這段代碼有什麼問題?
public function addComponent(c:Component):void
{
var type:String = Object(c).constructor.toString();
FlxG.log("type=" + type);
this._components[type] = c; // The evil line
FlxG.log("now type=" + _components[type]);
c.setData(this);
}
components
是作爲地圖/字典使用的對象字段。 type
設置爲[class PlayerComponent]
。基於谷歌搜索,這是有效的,應該按預期工作。
基於控制檯的輸出,它只是在該行後面保存 - 而不是完全崩潰。這是怎麼回事?更多的細節很高興根據要求提供。
請確保您使用的是調試Flash播放器。沒有它,異常(崩潰)會默默地發生。 –
這是我第一次看到這種方式來獲取對象的類名(我的意思是constructor.toString()方法)。我更喜歡使用類(getDefinitionByName(getQualifiedClassName(obj))); – yannicuLar