first rev

This commit is contained in:
Darren Ranalli 2006-06-06 02:06:24 +00:00
parent 6c46fccb42
commit bb3f17e923

View File

@ -0,0 +1,31 @@
from direct.task.Task import Task
class DelayedCallback:
""" waits N frames and then calls a callback """
def __init__(self, frames, callback, cancelFunc=None):
# checkFunc is optional; called every frame, if returns True, FrameDelay is cancelled
# and callback is not called
self._frames = frames
self._callback = callback
self._cancelFunc = cancelFunc
self._taskName = uniqueName(self.__class__.__name__)
self._startTask()
def destroy(self):
self._stopTask()
def finish(self):
self._callback()
self.destroy()
def _startTask(self):
taskMgr.add(self._frameTask, self._taskName)
self._counter = 0
def _stopTask(self):
taskMgr.remove(self._taskName)
def _frameTask(self, task=None):
if self._cancelFunc():
self.destroy()
return Task.done
self._counter += 1
if self._counter >= self._frames:
self.finish()
return Task.done
return Task.cont