SDL中文论坛

标题: 周期动画、does_not_change_变量 [打印本页]

作者: ancientcc    时间: 2017-6-1 21:01
标题: 周期动画、does_not_change_变量
本帖最后由 ancientcc 于 2017-6-3 08:47 编辑

does_not_change_是画线中变量,它指示该画线是否只有一个图元,ture表示只有一个“图元”,否则不是。对于只有一个图元时,动画逻辑会对它简化处理。




对周期动画,所有画线必须在同一时刻开始播放下一周期!class animated中cycles_指示的是该画线需周期播放,如果画线只是按cycles=true和自已播放完了就开始下一周期,那对于多画线、各画线播放时间还不同的周期动画来说,从下一周期开始动画就乱了。为此,一画线判断是否要下播放进入下一周期不仅仅要看最后一帧播放完,它可能还须要等,直到外界告诉它所有画线都播放完了,即这一动画周期已结束。

外界如何额外告诉画线此动画所有画线播放完了,一种方法是修改update_last_draw_time,让增加个可启动下一周期参数;第二种方法是先用animation_finished_potential()判断,一旦判断出播放完了,调用start_animation让重启一次播放。

此个动画设的cycles_是false!
  1. void draw_canvas_anim(display& disp, int id, surface& canvas, const SDL_Rect& rect)
  2. {
  3.         ......
  4.         if (anim.animation_finished_potential()) {
  5.                 anim.start_animation(0, map_location::null_location, map_location::null_location, false);
  6.         } else {
  7.                 anim.update_last_draw_time();
  8.         }
  9.         ......
  10. }
复制代码





欢迎光临 SDL中文论坛 (http://www.libsdl.cn/bbs/) Powered by Discuz! X3.3