コード内のバグを突き止めて、creationComplete イベントがクラス Player によって発生していないことを突き止めました。
グリッド.mxml:
m_arrSpaces[4][4].entities.addItem(new Player());
Player.mxml:
<?xml version="1.0" encoding="utf-8"?>
<Entity xmlns="entities.*" xmlns:mx="http://www.adobe.com/2006/mxml" creationComplete="onCreationComplete">
<mx:Script>
<![CDATA[
import mx.controls.Alert;
private function onCreationComplete():void {
Alert.show("cration");
m_imgActiveImage = imgUp;
}
]]>
</mx:Script>
Grid.mxml の行が実行され、Player オブジェクトが m_arrSpaces[4][4].entities に追加されていることがわかります。また、 Player.onCreationComplete() が呼び出されないことも知っています。何?
編集: 待ってください。次のように、タイプミスを修正して MXML タグに括弧を含めても、同じことをしています。
creationComplete="onCreationComplete()"
編集:ああ、そうです、エンティティのコードは次のとおりです。
<?xml version="1.0" encoding="utf-8"?>
<mx:Canvas xmlns:mx="http://www.adobe.com/2006/mxml" creationComplete="onCreationComplete()">
<mx:Script>
<![CDATA[
import mx.collections.ArrayCollection;
import mx.controls.Image;
import spaces.Space;
protected var m_imgActiveImage:Image;
public function get activeImage():Image {
return m_imgActiveImage;
}
private function onCreationComplete():void {
width = Space.SPAN - 4;
height = width;
}
]]>
</mx:Script>
</mx:Canvas>