动作脚本3.在角色移动时更改动画

时间:2013-09-18 19:33:34

标签: actionscript-3 flash animation actionscript character

我正在制作简单的Flash游戏。我需要在角色移动时更改动画。例如,当进行,跑步,跳跃,攻击等时,我有不同的动画。我只是不知道如何正确添加它们?

在图书馆中,我创造了我的角色,它将“英雄”命名为“联盟”,也称为“英雄”。我需要双击它并在Hero的时间轴中创建具有名称运行,行走,攻击等的新图层...然后放在这里动画?或者我需要在图书馆中创建名称和As Linkage“HeroRun”,“heroAttack”等......?

据我所知,我需要稍后使用类似Hero.gotoAndPlay(run);的内容,但这对我不起作用。对不起,这些新手问题,但我真的需要你的帮助,谢谢。

例如,这是我左转代码的一部分:

    if(left){
                Hero.x_speed = -walkspeed;
                setDirection(1);
                Hero.gotoAndPlay(run);// I don't know how to use It correctly
}

更新

现在看起来如何: 创建了MovieClip角色Hero

Character

创建图层点击

layers

现在如果想看“点击”动画,我需要使用Hero.gotoAndStop("hit");吗?

更新2 好吧,我这样做了,但现在我有问题没有动画只能在我使用Hero.gotoAndStop("attack");后更改图像,但这里必须是动画。这是照片MovieClip的攻击方式: movieclip

这是'我的英雄截图。它有2个关键帧攻击和继续。

Hero screen shot

这是英雄> go timeline的截图:

timeline

更新

这是我的空间按钮(跳跃角色)的代码当它在地面上显示动画时我有很大的滞后我认为这是因为检查碰撞以及在空中动画播放时没有滞后。

    if(Hero.y_speed>0 && myCollisionList.checkCollisions().length > 0 ){
        Hero.y_speed=0;
        Hero.x_speed=0;

        if(space){


            if (ground.hitTestPoint(Hero.x + 28, Hero.y+20, true)){

            Hero.gotoAndStop("attack");
            stop();
            Hero.y_speed = -20;

这是碰撞清单:

        var myCollisionList:CollisionList = new CollisionList(Hero);
        myCollisionList.addItem(ground);
        myCollisionList.addItem(ground3);
        myCollisionList.addItem(ground5);
        myCollisionList.addItem(ground4);

1 个答案:

答案 0 :(得分:1)

gotoAndPlay()函数采用帧索引(int)或帧标签(String)参数,而不是另一个影片剪辑的名称。

您尝试做的事情可以通过多种方式完成 - 在我看来,最简单的方法是设置一个MovieClip,其中包含角色的所有动画作为单独的关键帧。然后,您可以使用唯一标签标记每个关键帧,然后使用gotoAndStop()功能在动画之间切换。

首先,将每个角色动画创建为单独的MovieClip - 您无需导出这些动画(除非您需要以编程方式访问它们)。完成此操作后,创建一个新的MovieClip并为您制作的每个动画添加一个关键帧。因此,如果您的角色有4个动画(例如walkingidle1idle2running),您将在此剪辑中创建4个关键帧。

将每个动画放在其中一个关键帧中(仔细对齐它们,以便在切换角色时不会跳转)然后用适当的动画名称标记每个关键帧。从库中导出此影片剪辑。您可以通过单击时间轴中的关键帧,然后在Properties窗口中添加标签名称来标记关键帧。一旦框架标签到位,框架将有一个小的红旗。这是Flash CS 5中标签的屏幕截图(图像被编辑为仅显示相关部分):

Frame labels added in Flash CS 5 (edited)

完成此操作后,您现在可以通过调用以下内容创建角色实例并设置正确的动画状态:

...
Hero.gotoAndStop("walking");
...

如果步行动画位于关键帧1上,您也可以只使用Hero.gotoAndStop ( 1 );,但如果更改动画的顺序,则必须更新所有代码(如果使用帧索引)。使用框架标签更加灵活。

您需要使用gotoAndStop()让Flash停留在指定的关键帧上并继续在该帧中显示动画。如果你使用gotoAndPlay(),你只会看到所有状态动画的第一帧,因为Flash会在关键帧中循环。