1

私は小さな問題を抱えているようです.AS3で変数として新しいムービークリップを作成しています.ASファイルはMonster.ASで、基本クラスをMonster、クラスをMonster1、トレース メッセージがあるためモンスター コードが実行されますが、画面には表示されません。基本クラスを flash.display.MovieClip に変更し、クラスを Monster に変更すると、コードが実行され、敵...基本クラスがどのように機能するかが原因で、表示される理由と表示されない理由について非常に混乱しています。モンスターを作成するコードは次のとおりです

これは Level.as のコード スニペットです。

    public function Level( playerHero:HeroDisplay )
    {
        trace("Level code ran");
        monsterArray = new Array();
        heroGra = playerHero;
        addChild( heroGra );
        var newMonster = new Monster();
        monsterArray.push( newMonster );
        addChild( newMonster );
        setupLevel(1);
        //Buttons
        this.addEventListener(TouchEvent.TOUCH_BEGIN, onTouchBegin);
        this.addEventListener(TouchEvent.TOUCH_MOVE, onTouchMove);
        this.addEventListener(TouchEvent.TOUCH_END, onTouchEnd);
    }

これは両方で機能しますが、上で述べたように、ベース クラス = モンスター クラス = モンスター 1 の場合は表示されません ベース クラス = flash.display.MovieClip クラス = モンスター が表示されます。

理由を知っている人はいますか?

キャンバス

詳細, クラス + ベースクラスの画像はこちら

ここに画像の説明を入力

また、ここにモンスターASファイルがあります

package
{
import flash.display.MovieClip;

public class Monster extends MovieClip
{
    public var id:Number;
    public var hp:Number;
    public var damage:Number;
    public var speed:Number;
    public var xPos:Number;
    public var yPos:Number;
    public var avaiableSkill:Number;

    public function Monster()
    {
        id = 1;
        monsterSetup();
    }

    public function monsterSetup():void
    {
        switch(id)
        {
            case 1: hp = 10; damage = 1; speed = 2; avaiableSkill = 0; this.x = 100; this.y = 150; trace("Monster Setup");
            break;
            default:
            break;
        }
    }
}
}
4

1 に答える 1

1

あなたのモンスタークラスには視覚的な側面がありません。

Monster1 さん、あなたのモンスターのアートワークがあると思いますよね?

Monster1 クラスを使用するには、次のコードを使用できます。

var newMonster:Monster1 = new Monster1;
addChild(newMonster);

あなたのアプローチが何であるかはよくわかりませんが、セットアップに基づいて、視覚要素のインスタンス (Monster1 クラス) を作成することは決してありません。

于 2012-12-30T22:18:05.353 に答える