0

我是使用 ActionScript 的新手,我正在尝试使用时间轴来触发游戏中的某些事件。特别是,我使用时间线来触发枪的开火事件,这样当开火动画到达某个帧时,就会产生子弹。在枪类(Enter_Frame)中,我检查鼠标是否被按住,并且最后一次射击和当前时间之间的时间比冷却时间长,如果一切正常,我会播放动画。

if (time - lastShot > cooldown)
{
    canShoot = true;
    lastShot = time;
}
if (mouseHold && canShoot)
{
    play();
}

当帧速率低于在冷却时间再次启动之前无法播放完整动画的点时,这会产生问题。在这种情况下,子弹发射速度较慢,帧速率较低。

此外,较高的帧速率使枪对鼠标输入的响应更灵敏,因为射击帧比较低的帧速率更快。

目标显然是让游戏完全独立于帧率。我希望能够根据枪的冷却来减慢或加快动画的帧速率。

使该动画在特定时间段内播放而不会跳过我放入时间轴的动作的最佳方法是什么?

4

2 回答 2

0

听起来您走在正确的轨道上,但是以错误的方式接近它。查看 Timer 类,它与帧速率无关,对您有很大帮助。

var my_timer = new Timer(1000,0); //in milliseconds
my_timer.addEventListener(TimerEvent.TIMER, catchTimer);
my_timer.start();


function catchTimer(e:TimerEvent)
{
     trace("event fired");
}
于 2013-01-22T17:24:58.157 回答
0

如果您希望动画精确且不依赖于帧速率,则应该研究基于时间的动画而不是基于帧的动画,这样您的动画将始终相同,并且将补偿较慢计算机的较慢帧速率。这是一篇解释得很好的文章: http: //www.flashgamesclassroom.com/classroom/actionscript/frame-based-vs-time-based-animation/

于 2013-03-02T15:43:02.097 回答