1

我尝试在 AS 3 中制作简单的程序,这是场景:我在 Linkage 中有一个 MovieClip,名称为 Hero,我想将 Hero 向右移动,速度为 2,如果 hero.x = 200,那么 Hero 将停在位置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是一个movieclip,所以将其转换为movieclip会导致flash明白可以在Hero上调用start和stop函数。

于 2012-12-05T07:40:15.257 回答