2012-07-18 67 views
1

我试图动画是Cocos2d节点和这样的观点的UIKit招:的Cocos2D和UIKit动画不同步

-(void)someFunction { 
    [myCocosNode runAction:[CCMoveTo actionWithDuration:myTime position:cocosPoint]]; 
    [UIView animateWithDuration:myTime animations:^{ myView.frame = CGRectMake(uiPoint.x, uiPoint.y, myWidth, myHeight); }]; 
} 

但是UIKit的视图不会以相同的速度为cocos2d的节点移动,并且他们处于相同的起始位置,并处于相同的结束位置。

任何想法?

+0

基于OpenGL ES +定时器的Cocos2d,UiKit有自己的实现。我认为你不能同步它们。尝试在设备上测试此动画,模拟器可能会滞后。 – 2012-07-18 06:00:20

+0

我能够想到的最好的方法是将动画曲线设置为UIKit的线性,然后直到看起来接近为止。虽然看起来不是最好的:/ – jmosesman 2012-07-18 15:57:36

回答

1

发现,对于同步运动by PhilM in this thread.

工作他附着了UIView到CCLayer的子类,并覆盖setPosition:更新UIView的位置时该层移动的解决方案。然后在图层上使用CCMoveTo将使移动与UIView同步。

-(void)setPosition:(CGPoint)pos { 
    [super setPosition:pos]; 

    CGRect frame = slider.frame; 
    frame.origin.y = frame.origin.y + ([self position].y - pos.y); // Changed this line a bit to get correct positioning 
    slider.frame = frame; 
} 

感谢PhilM!

+0

注意:同样的事情可以应用于褪色! – jmosesman 2012-07-18 19:32:11