Python 动画定时器
简单的动画,这是可行的,但是替换的图像数据会留在缓冲区中吗? 使用定时器制作动画对CPU有害吗?我的意思是像self.timer.Start(25)那样从单个图像文件中制作一些很酷的动画Python 动画定时器,python,wxpython,Python,Wxpython,简单的动画,这是可行的,但是替换的图像数据会留在缓冲区中吗? 使用定时器制作动画对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
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()
首先,每次需要显示图像时,都要重新加载图像。是的,这是非常糟糕的,因为这需要大量的磁盘I/O,而且磁盘可能是程序必须与之交互的最慢的设备。尽可能避免不惜一切代价使用磁盘 现在,为了缓解这种情况,有几种选择:
- 创建自己的子类以匹配动画(需要重写
中的一些方法,但也重写了其中的一些方法)。这是解决此问题的正确方法,但不是最简单的方法wx.animate.animation
- 如果可以将动画转换为.gif而不丢失可接受的细节,请使用。这比以前的解决方案稍微容易一些,因为您不必编写任何动画代码
- 将位图保存在内存中;只需将它们存储在某个位置的列表中(“某处”并不意味着在
函数本身内部,因为每次调用函数time
时仍会重新加载;“某处”表示time
函数作为对象的一部分)time
- 在UI中保留所有位图,并在需要更改帧时在它们之间切换可见性
wx.Timer
。