# -*- coding: utf-8 -*- class CAnim(object): mNumFrames = 0 mDelay = 0 mCurrentFrame = 0 mTimeFrame = 0 mIsLoop = False # Flag to indicate it the animation has ended. mEnded = False # Indicates if frame has changed since the previous update(). mFrameHasChanged = False # Used to calculate if the previous frame is the same as the current frame. mPreviousFrame = 0 mMinFrame = 0 def __init__(self, aNumFrames, aDelay, aIsLoop = False): self.init(aNumFrames, aDelay, aIsLoop); def init(self, aNumFrames, aDelay, aIsLoop = False, aMinFrame = 0): self.mNumFrames = aNumFrames self.mDelay = aDelay self.mCurrentFrame = aMinFrame self.mTimeFrame = 0 self.mIsLoop = aIsLoop self.mEnded = False self.mFrameHasChanged = False self.mPreviousFrame = 0 self.mMinFrame = aMinFrame def reset(self): self.mCurrentFrame = 0 self.mTimeFrame = 0 self.mFrameHasChanged = False self.mPreviousFrame = 0 def update(self): self.mTimeFrame += 1 if (self.mTimeFrame >= self.mDelay): self.mTimeFrame = 0 self.mCurrentFrame += 1 if (self.mCurrentFrame >= self.mNumFrames): if (self.mIsLoop): self.mCurrentFrame = self.mMinFrame else: self.mCurrentFrame = self.mNumFrames - 1 self.mEnded = True if (self.mPreviousFrame <> self.mCurrentFrame): self.mFrameHasChanged = True else: self.mFrameHasChanged = False self.mPreviousFrame = self.mCurrentFrame def getCurrentFrame(self): return self.mCurrentFrame def isEnded(self): return self.mEnded def frameHasChanged(self): return self.mFrameHasChanged