2010-10-03 142 views
0

我使用以下来交换2精灵的位置。cocos2d:交换雪碧

CCSprite *sprite1 = (CCSprite*)[self getChildByTag:tagOfFirstSprite]; 
    CCSprite *sprite2 = (CCSprite*)[self getChildByTag:tagOfSecondSprite]; 

    CGPoint SpritePosition1 = [sprite1 position]; 
    CGPoint SpritePosition2 = [sprite2 position]; 



    [sprite1 runAction:[CCMoveTo actionWithDuration:1.0 position:ccp(SpritePosition2.x, SpritePosition2.y)]]; 
    [sprite2 runAction:[CCMoveTo actionWithDuration:1.0 position:ccp(SpritePosition1.x, SpritePosition1.y)]]; 

这些是box2d body.But它不工作.......任何想法??

回答

2

我假设您使用的Box2D样本模板实现了由调度程序不断调用的“tick()”函数。该函数调用world-> step()函数,并更新box2D主体的位置,然后根据box2D主体的新位置更新精灵的位置。 当你只是调用runAction时,它不会影响Box2D主体的位置,所以每次调用tick()函数时,都会根据box2D主体的位置设置你的精灵的位置。 现在,即使你的runAction正在移动你的精灵,当tick()函数被调用时,它会在每秒钟重复几次之后重置。 我希望你能理解。

+0

请阅读此主题以更好地理解此问题,http://www.cocos2d-iphone.org/forum/topic/6971 – Tayyab 2011-03-07 12:03:26

+0

yes..虽然我已经发现它...但非常非常感谢您的美丽的说明.....我想你明确... – Rony 2011-03-08 04:05:36