java 时间轴显示数据_按下按钮时使用时间轴显示动画 .

在Java游戏中,开发者遇到一个问题:当角色攻击时,AnimationTimer快速展示攻击图像,导致动画不连贯。为解决此问题,开发者试图在按下空格键时启动时间轴,以较慢速度逐帧播放攻击动画。时间轴应按设定次数循环播放攻击数组中的所有图像,然后返回游戏循环。目前,时间轴可能未按预期次数运行。寻求解决方案以确保时间轴能慢速播放数组图像,同时保持原有的游戏循环正常运行。
摘要由CSDN通过智能技术生成

我正在制作一个小游戏,用户可以让角色在屏幕上走动并使其预先形成攻击动作 . 用于创建动画的所有图像都保存在数组中 . 对于我的游戏循环,我使用的是AnimationTimer,一切都按照我想要的方式工作,只要用户能够控制角色和角色在屏幕上移动 . 但是,我遇到的问题是当我想要显示角色攻击时,AnimationTimer会快速运行,并且它会快速地穿过攻击图像阵列,以至于你能看到的只是结束图像 . 因此我尝试将其设置为当空格键被按下以进行攻击时,它将启动时间轴,然后时间轴将以较慢的速率通过攻击图像阵列 . 我希望时间轴运行15次(攻击阵列的大小),显示攻击阵列中的所有图像,然后返回游戏 . 我不确定我是否正确使用时间轴,因为似乎时间轴在每次调用时都不会始终运行相同的次数 . 所以我的问题是我如何才能解决我能够以较慢的速度显示和数组图像但仍然能够使用我原来的游戏循环的问题?我的所有数组大小都相同,因此attackDown.length是所有数组的大小 . 每次按下空格键时,我的方法attack()都会从我的主类调用 . 这是由AnimationTimer控制的 .

public void attack(GraphicsContext gc){

Timeline timeline = new Timeline(new KeyFrame(

Duration.millis(2500),

e ->attackDisplay(gc)));

timeline.setCycleCount(attackDown.length);

timeline.play();

}

private void attackDisplay(GraphicsContext gc){

System.out.println("in attack" + " a: " + a);

if(a < (attackDown.length-1))

a++;

else

a = 0;

if(facing == 'D'){

gc.fillRect(0,0,WIDTH,HEIGHT);

gc.drawImage(attackDown[a],xLoc,yLoc);

}else if(facing == 'U'){

gc.fillRect(0,0,WIDTH,HEIGHT);

gc.drawImage(attackUp[a],xLoc,yLoc);

}else if(facing == 'L'){

gc.fillRect(0,0,WIDTH,HEIGHT);

gc.drawImage(attackLeft[a],xLoc,yLoc);

}else if(facing == 'R'){

gc.fillRect(0,0,WIDTH,HEIGHT);

gc.drawImage(attackRight[a],xLoc,yLoc);

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值