繁体   English   中英

如何在游戏动画中动态命名对象?

[英]how to dynamically name objects in a game animation?

我正在尝试使用框架在JS中开发游戏。

到目前为止,我已经为一个角色准备了多个动画,并且我需要能够运行我的动画功能(实际上是将一个组件添加到角色对象中,该组件为该角色创建和管理所有动画)用于不同的动画。

假设玩家按下执行X动作的“ a”键,而不是他们按下执行Y动作的“ b”键。

当前,我检测到按下了哪个键,然后使用switch / case函数设置当前动画,然后将其推入动画组件。

它运行完美,但是问题出在每个新动画上,我在做类似的事情:

switch (keydown){
   case 65: // 'a' key was pressed
       character.animation = myAnimationComponent.animation.a;
       break;
   case 66: // 'b' key was pressed
       character.animation = myAnimationComponent.animation.b;
       break;
}
// something happens to 'animation' that renders it on the screen

假设我实际上将动画值(又名“ a”或“ b”)存储到keydown对象中,则可以将其取出: keydown.animation; 打印a

因此,除了为每个动画设置开关或是否有其他大小写,我如何将动画值传递给对象,这样我就不需要为每个动画设置大小写,ei:

animation =  myAnimationComponent.animation.?keydown.animation?;

(keydown.animation应该输出“ a”或“ b”)

尝试使用:

var animType = String.fromCharCode(keydown);
if(animType){
     animation = myAnimationComponent.animation[animType];
}

一种解决方案是将keydown值用作对象中的键

animation =  myAnimationComponent.animation[keydown];

然后,当您稍后检索它时,可以将其传递给将数值转换为字母字符的函数

String.fromCharCode(97 + animation);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM