0

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

在图书馆我创造了我的角色,它命名为“英雄”作为链接也“英雄”。我需要双击它并在英雄的时间轴中创建新的图层,名称为跑步、行走、攻击等......然后将动画放在这里?或者我需要在库中创建名称并作为链接“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

特点

创造的层层出不穷

层数

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

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

这是我的英雄截图。它有 2 个关键帧攻击和前进。

英雄截图

这是英雄 > 时间线的截图:

时间线

更新:

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

    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);
4

1 回答 1

1

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

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

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

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

Flash CS 5 中添加的帧标签(已编辑)

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

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

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

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

于 2013-09-18T19:45:18.277 回答