2

この問題は私には非常に単純に思えますが、私はそれを修正することも、どこでも答えを見つけることができませんでした。

これは、というクラスのクラスコンストラクターにあり、コンストラクターを呼び出したオブジェクトであり、のインスタンスblockです。block_makerlevel

this.bitmap = new Bitmap(this.bitmap_data);

this.addChild(this.bitmap);     

this.block_maker.stage_foreground.addChild(this);

levelstage_foregroundがステージに追加されますが、何も表示されません。trace(stage_foreground.numChildren);は正しい子の数を示していますvar temp = (this.stage_foreground.getChildAt(0)); trace(temp.numChildren);が、正しくは子の子は実際には表示されず、ステージは空白のままです。

上記のコードをに変更すると

this.bitmap = new Bitmap(this.bitmap_data);

this.block_maker.stage_foreground.addChild(this.bitmap);

ブロックはの子としてステージに表示されますlevel_instance.stage_foregroundが、この方法では、位置データがないため、ビットマップは適切に配置されません。単純に与えthis.bitmap xy配置することができ、それは機能しますが、ビットマップを子としてブロックに追加し、それを子としてに追加しただけでは機能しない理由に興味がありstage_foregroundます。

作成this.bitmapした一時オブジェクトや、など、他の多くのオブジェクトクラスに置き換えようとしましたが、何も表示されないため、それが。であることとは関係がないことがわかります。MovieClipShapeBitmap

4

2 に答える 2

1

あなたが言ったように

これは、blockというクラスのクラスコンストラクターにあります。block_makerは、レベルのインスタンスであるコンストラクターを呼び出したオブジェクトです。

this.bitmap = new Bitmap(this.bitmap_data);
this.addChild(this.bitmap);     
this.block_maker.stage_foreground.addChild(this);

レベルクラスは、表示オブジェクトを表示するために拡張する必要があります。
言い換えると

"これ"

表示オブジェクトであるか、何らかの形で拡張する必要があります。



これが機能しない理由。

this.block_maker.stage_foreground.addChild(this);

そしてこれは

this.block_maker.stage_foreground.addChild(this.bitmap);

「this」は表示オブジェクトではなく、「this.bitmap」が表示オブジェクトであるためです。

DisplayObjectクラスは、ディスプレイリストに配置できるすべてのオブジェクトの基本クラスです。

于 2012-06-17T22:23:32.040 に答える
0

まず、必須ではありませんが、クラス名は大文字で始めることをお勧めします。varsは常に小文字で始まります。これは、主に混乱を避けるためのAS3の一般的な「ルール」です。

問題はおそらくあなたの使用にありthisます; あなたがしていることはに追加することthis です this。私には、それは適切なコーディング方法ではないようです。

また、他のすべての試みが機能しなかったため、必要な変数を作成したり、変数を追加したりしましたpublic staticか?

于 2012-06-16T22:01:56.380 に答える