简单的动画,这可行,但替换的图像数据会留在缓冲区吗?
并且正在使用定时器对动画有害的CPU?我的意思是self.timer.Start(25)
从单个图像文件中做一些很酷的动画。
self.nm = ['01.png', '02.png', '03.png', '04.png']
self.stop = 0
def time(self, event):
self.count += 1
if self.count == 1:
self.anime = wx.StaticBitmap(self, -1, wx.Bitmap(self.nm[self.stop], wx.BITMAP_TYPE_ANY))
if self.count == 2:
self.anime.Show(0)
if self.stop == 3:
self.timer.Stop()
else:
self.stop+=1
self.count = 0
event.Skip()
答案 0 :(得分:1)
首先,每次需要显示时,您确实正在重新加载每个图像。是的,这非常糟糕,因为这是很多磁盘I / O,而磁盘可能是您的程序必须与之交互的最慢设备。尽可能避免不惜一切代价使用磁盘。
现在,为了缓解这一点,有几个选择:
wx.animate.Animation
子类以匹配您的动画(需要覆盖wx.animate.Animation
中的某些方法,还需要覆盖wx.animate.AnimationBase
中的一些方法。这是解决此问题的正确方法,但不是最简单的。wx.animate.AnimationCtrl
。这比以前的解决方案稍微容易一些,因为您不必编写任何动画代码。time
函数本身内部,因为每次调用函数time
时仍会重新加载;“某处”表示作为成员time
函数所属的对象。)