0

コード内のバグを突き止めて、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>
4

2 に答える 2

1

あなたはこれを持っています: creationComplete="onCreationComplete"

それは次のようになります。

creationComplete="onCreationComplete()"

新しいアプリケーションでアラートを使用して簡単なテストを行いましたが、onComplete() メソッドに到達しませんでした。

于 2012-09-15T03:01:46.350 に答える
0

わかりました、手元にある別の問題のように見えます

m_arrSpaces[4][4].addChild(new Player());

ではなく、すべてを機能させるために呼び出す必要がありました

m_arrSpaces[4][4].entities.addItem(new Player());
于 2012-09-15T04:34:44.380 に答える