返回介绍

2.4 敌人和导弹

发布于 2024-07-13 12:25:03 字数 2667 浏览 0 评论 0 收藏 0

我们的每个敌人都需要带上两个动画,常态和爆炸态。敌人的行动和等级将在下一步骤中讨论。这里接触到的新玩意儿是 ANIMATION_CALLBACK 类型。回调(callback)是指将来会被调用的函数。在这里是指当前动画结束的时刻。我们使用这种类型来表现爆炸:当爆炸动画播放完成之后我们移除精灵(在步骤 3 中会详细讨论具体操作方法)。

当你需要为动画指定两个或者更多的类型时,你可以使用 | 符号来分隔。例如,你的动画可以有这样的类型:ANIMATION_CALLBACK | ANIMATION_ONCE | ANIMATION_VERTICAL,如此这般,动画就会垂直方式播放一次,播放结束时执行回调函数!这对于想在两段循环播放动画之间增加过渡动画来说是很方便的。在这种情况下,你可以通过回调函数改变循环播放的动画(但在这篇教程中我们并不需要)。

var enemies = new Array(3); // There are three kind of enemies in the game

//...

///  List of enemies animations :
// 1st kind of enemy:
enemies[0] = new Array(); // enemies have two animations
enemies[0]["idle"]   = new $.gameQuery.Animation({imageURL: "minion_idle.png", numberOfFrame: 5,
  delta: 52, rate: 60, type: $.gameQuery.ANIMATION_VERTICAL});
enemies[0]["explode"]  = new $.gameQuery.Animation({imageURL: "minion_explode.png", numberOfFrame: 11,
  delta: 52, rate: 30, type: $.gameQuery.ANIMATION_VERTICAL | $.gameQuery.ANIMATION_CALLBACK});

// 2nd kind of enemy:
enemies[1] = new Array();
enemies[1]["idle"]  = new $.gameQuery.Animation({imageURL: "brainy_idle.png", numberOfFrame: 8, 
  delta: 42, rate: 60, type:$.gameQuery.ANIMATION_VERTICAL});
enemies[1]["explode"] = new $.gameQuery.Animation({imageURL: "brainy_explode.png", numberOfFrame: 8,
  delta: 42, rate: 60, type: $.gameQuery.ANIMATION_VERTICAL | $.gameQuery.ANIMATION_CALLBACK});

// 3rd kind of enemy:
enemies[2] = new Array();
enemies[2]["idle"]   = new $.gameQuery.Animation({imageURL: "bossy_idle.png", numberOfFrame: 5,
  delta: 100, rate: 60, type: $.gameQuery.ANIMATION_VERTICAL});
enemies[2]["explode"]  = new $.gameQuery.Animation({imageURL: "bossy_explode.png", numberOfFrame: 9,
  delta: 100, rate: 60, type: $.gameQuery.ANIMATION_VERTICAL | $.gameQuery.ANIMATION_CALLBACK});

// Weapon missile:
missile["player"] = new $.gameQuery.Animation({imageURL: "player_missile.png", numberOfFrame: 6,
  delta: 10, rate: 90, type: $.gameQuery.ANIMATION_VERTICAL});
missile["enemies"] = new $.gameQuery.Animation({imageURL: "enemy_missile.png", numberOfFrame: 6,
  delta: 15, rate: 90, type: $.gameQuery.ANIMATION_VERTICAL});
missile["playerexplode"] = new $.gameQuery.Animation({imageURL: "player_missile_explode.png",
  numberOfFrame: 8, delta: 23, rate: 90, 
  type: $.gameQuery.ANIMATION_VERTICAL | $.gameQuery.ANIMATION_CALLBACK});
missile["enemiesexplode"] = new $.gameQuery.Animation({imageURL: "enemy_missile_explode.png",
  numberOfFrame: 6, delta: 15, rate: 90, 
  type: $.gameQuery.ANIMATION_VERTICAL | $.gameQuery.ANIMATION_CALLBACK});

这就是敌人以及导弹的动画!在下一步骤里,我们讲解这个游戏的对象模型(object model)。保持更简单的 javascript 和更少的 gameQuery。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文