1

私はAS 3で簡単なプログラムを作ろうとしています. x = 200、これは私の簡単なコードです:



    var hero:Hero = new Hero();
        hero.x = 0;
        hero.y = 300;
        addChild(hero);

    addEventListener(Event.ENTER_FRAME, animateHero);
    function animateHero(event:Event) {

    if (hero.x <= 200){
        hero.play();
        } else { 
        hero.currentFrame(stop);
        }
        hero.x += 2;
    }

このコードを試してみると、実行中ですが、出力パネルにエラーメッセージが繰り返し表示されます:



    TypeError: Error #1006: value is not a function.
        at SpriteMovement_fla::MainTimeline/animateHero()

私の質問 :

私のコードは間違っていますか? 間違っている場合は、正しいコードを教えてください。

4

2 に答える 2

1
var hero:Hero = new Hero();
    hero.x = 0;
    hero.y = 300;
    addChild(hero);
    hero.play();
addEventListener(Event.ENTER_FRAME, animateHero);
function animateHero(event:Event) {

    if (hero.x <= 200){
        hero.x += 2;
    } else { 
        hero.stop();
        removeEventListener(Event.ENTER_FRAME, animateHero);
    }
}

これがあなたが望んでいたことだと思います。

「currentFrame」は関数ではなく値です。これが、そのエラーが表示される理由です。

于 2012-12-05T09:54:27.627 に答える
0

私が間違っていなければ (かなり前のことです)、hero.stop()currentFrame(stop) の代わりに使用できます。AS3 は Hero がムービークリップであることを認識していないため、エラーが生成されると思います。そのため、ムービークリップにキャストすると、ヒーローで開始関数と停止関数を呼び出すことができることをフラッシュが認識します。

于 2012-12-05T07:40:15.257 に答える