关于image_speed的研究
赵品尉 发表于 2016-01-08 03:24:50 1040

[align=center]关于image_speed的研究[/align]若想达到动画等于某帧时,就怎执行什么代码,如何实现呢?
[align=center]精确控制动画帧[/align]object: object0
Create:
image_speed=0.3
Draw:
draw_self()
draw_set_halign(fa_center)
draw_text(x,y+30,"image_index:"+string(image_index)+" "+"image_speed:"+string(image_speed))
if(image_index==1)
{
show_message("neng qu dao 1") //不会出现消息框~!因为image_speed=0.3,每步image_index会加0.3,不可能会等于1
}
明显不行~~~!

改进后:
object: object0
Create:
image_speed=0.3
Draw:
draw_self()
draw_set_halign(fa_center)
draw_text(x,y+30,"image_index:"+string(image_index)+" "+"image_speed:"+string(image_speed))
if(round(image_index)==1)
{
show_message("neng qu dao 1")
//会出现消息框~!四舍五入后会弹出3次,要是等于此帧,敌人就减血1次,但是此代码会减3次。
}
[attach]1920[/attach]

还是不行,怎么办?只能自己写代码实现了!
object: object0
Create:
my_image_speed=0.3 //自定义动画帧播放速度
my_image_tick = 0 //自定义动画计时
Step:
my_image_tick += my_image_speed; //不断计时
if(my_image_tick >= 1) //计时大于或等于1帧的时间
{
my_image_tick = 0 // 计时归零,重新累计
image_index+=1 // 动画换1帧
}
Draw:
draw_self()
draw_set_halign(fa_center)
draw_text(x,y+30,"image_index:"+string(image_index)+" "+"image_speed:"+string(image_speed))
if(image_index==1)
{
show_message("能取到第1帧~!")
}
运行后,发现能取到能取到第1帧了,如果你对帧要有精确的控制可以运用上述代码!


[align=center]动画播放结束事件
[/align]例如:你想自己实现动画播放结束事件,只需在上面的代码基础上在step事件中加入:
step:
if (image_index==4) //动画共5(0~4)帧,image_index==4表示播放到了最后1帧
{
my_image_speed = 0 //自己想怎么实现播放结束动作都OK~
image_index = 0
}

[align=center] 倒播动画如何实现[/align] image_index指的是sprite播放到哪个帧数,而image_speed可以调整播放速度。所以我们自然就会想到把image_speed设成负值不就可以倒播了吗?确实可以。但是在这种情况下,AnimationEnd事件不会被响应。由Debug可以看到,本该归0的image_index并没有归0,而是继续负下去。所以使用的时候请小心。
其实在上面的代码中把image_index+=1改为image_index-=1,就能达到效果了!
Step:
my_image_tick += my_image_speed;
if(my_image_tick >= 1)
{
my_image_tick = 0
image_index -= 1 //把image_index+=1改为image_index-=1就行了!
}


[align=center]其它注意
[/align]1、image_index 到了最大帧后会归0重头播放。
2、image_speed一般设为0—1之间的数,例如0.3,其实已经很快了,因为房间速度为30步每秒,0.3*30=9,基本上1秒播放了9帧~~~!!!
3、若image_speed设置得很大的话,例如:动画只有4帧的话image_speed=7意味着你每帧动画+4到原本subimage后再+3到你第二次循环的subimage-1的地方。于是就会倒着播放了。



更多精彩,请下载GameMakerStudio超入门(卷1)



最新回复 (2)
  • JMJM5656 发表于 2016-01-08 08:07:16
    0 2
    支持。