我通过向UIView添加几个图层来编写一种动画.这些图层应由脚本设置为可见或不可见.
该脚本基于实现协议的对象:
// the general protocol for a step
@protocol ActionStep
-(void) applyForTime:(int)playtime;
-(void) reset;
@end
Run Code Online (Sandbox Code Playgroud)
在计时器中我遍历步骤对象:
NSEnumerator* enumerator = [ScriptObjects objectEnumerator];
id obj;
while ( obj = [enumerator nextObject] )
{
id <ActionStep> step = obj;
[step applyForTime:currentmilliseconds];
}
Run Code Online (Sandbox Code Playgroud)
一个脚本对象就是这个对象:
@interface LayerStep : NSObject <ActionStep>
{
int mTimeOffset;
CGPoint mOffset;
float mAlpha;
LayerObject* mTheLayer;
bool mPrepared;
}
-(id)initWithLayerObject: (LayerObject*) theLayer Milliseconds:(int) milliseconds Offset:(CGPoint) offset Alpha:(float)alpha;
@end
Run Code Online (Sandbox Code Playgroud)
最后我在层中实现协议:
-(void) applyForTime:(int)playtime
{
if ( mPrepared ) // has the step already …Run Code Online (Sandbox Code Playgroud)