1

空の MovieClip である HomingBullet という名前の MovieClip クラスが 1 つあります (内部にグラフィックはありません)。HomingBullet をインスタンス化するときに、ライブラリからグラフィックを選択できるようにしようとしています。現在、HomingBullet のコンストラクタは次のようになっています。

public function HomingBullet(speed:int)
{
    playerX = Main.instance.getPlayerX();
    playerY = Main.instance.getPlayerY();
    this.speed = speed;
    addEventListener(Event.ADDED_TO_STAGE, addedToStage);
}

現在、このクラスの典型的なインスタンス化は次のようになります。

var tempBulletA = new HomingBullet(6);

基本的に、インスタンス化するときに使用するライブラリからグラフィックを選択できるようにしようとしています。

4

2 に答える 2

1

ライブラリ内のすべての弾丸が MovieClip ベースであると仮定します。コンストラクターを次のようにすることができます。

public function HomingBullet(speed:int, bulletClass:Class)
{
    addChild(new bulletClass());
    playerX = Main.instance.getPlayerX();
    playerY = Main.instance.getPlayerY();
    this.speed = speed;
    addEventListener(Event.ADDED_TO_STAGE, addedToStage);
}

インスタンスを作成するには:

var tempBulletA = new HomingBullet(6, someBullet);

上記の例の someBullet は、使用したい箇条書き記号のクラス名です。

于 2013-03-13T01:40:07.567 に答える
1

もちろん。最も簡単な方法は、ライブラリにムービークリップを作成し、その中にビットマップを配置することです。次に、そのムービークリップのプロパティ ダイアログを開き、[詳細設定] ドロップダウンをクリックして、[ActionScript 用にエクスポート] をオンにしてクラス名を付けます。この例では、クラス名として「Image1」を選択したとします。

次に、コードで次のようなことができます。

public function HomingBullet(speed:int, image:DisplayObject)
{

    addChild(image);
    playerX = Main.instance.getPlayerX();
    playerY = Main.instance.getPlayerY();
    this.speed = speed;
    addEventListener(Event.ADDED_TO_STAGE, addedToStage);
}

そして、次のようにインスタンス化します。

var tempBulletA = new HomingBullet(6, new Image1());

ビットマップのみを使用して、同じように (ムービークリップ ラッパーを使用せずに) エクスポートすることもできますが、ビットマップを作成するときにビットマップの高さと幅を知る必要があるため、これは少し面倒です。

于 2013-03-13T01:40:05.547 に答える