- (void)pauseAni:(CALayer*)layer
{
? ? CFTimeIntervalbegin = layer.beginTime;
? ? CGFloatspeed = layer.speed;
? ? layer.speed=0.0;
? ? layer.beginTime=0.0;
? ? layer.timeOffset=0.0;
? ? CFTimeInterval tp = [layer.superlayer convertTime:CACurrentMediaTime() toLayer:nil] ;
? ? layer.timeOffset= (tp - begin) * speed ;
}
- (void)resumeAni:(CALayer*)layerspeed:(CGFloat)speed
{
? ? CFTimeIntervalt = layer.timeOffset;
? ? layer.timeOffset=0.0;
? ? CFTimeInterval tp = [layer.superlayer convertTime:CACurrentMediaTime() toLayer:nil] ;
? ? layer.beginTime= tp - t/speed;
? ? layer.speed= speed ;
}
- (void)changeSpeed:(CGFloat)speedlayer:(CALayer*)layer
{
? ? NSLog(@"change speed : %f",speed) ;
? ? CFTimeIntervalbegin = layer.beginTime;
? ? CFTimeInterval tp = [layer.superlayer convertTime:CACurrentMediaTime() toLayer:nil] ;
? ? CFTimeIntervalt = (tp - begin) * layer.speed;
? ? if(speed ==0.f) {
? ? ? ? layer.beginTime=0.0;
? ? ? ? layer.timeOffset= t ;
? ? }else{
? ? ? ? if(t ==0.f) {
? ? ? ? ? ? t = layer.timeOffset;
? ? ? ? }
? ? ? ? layer.timeOffset=0.0;
? ? ? ? layer.beginTime= tp - t/speed;
? ? }
? ? layer.speed= speed ;
}