Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 同时运行两个Cocos2D操作序列不工作_Ios_Cocos2d Iphone_Action - Fatal编程技术网

Ios 同时运行两个Cocos2D操作序列不工作

Ios 同时运行两个Cocos2D操作序列不工作,ios,cocos2d-iphone,action,Ios,Cocos2d Iphone,Action,我试图在box2d世界中移动带有两个动作序列的相机。目标是有一个平滑的过渡,让用户看到整个游戏空间的相机平移。第一个序列包含一个短延迟动作,然后是将相机从右向左移动的动作。第二个序列包含相同的短延迟动作,然后是缩小动作和缩小动作。缩小和放大的组合持续时间等于平移动作。不幸的是,这两个序列中的动作并不一致。相反,一个序列的一部分将运行,然后另一个序列的一部分将运行,最后它们以同步方式运行序列的最后一部分。以下是我正在使用的代码: [self runAction: [CCSeque

我试图在box2d世界中移动带有两个动作序列的相机。目标是有一个平滑的过渡,让用户看到整个游戏空间的相机平移。第一个序列包含一个短延迟动作,然后是将相机从右向左移动的动作。第二个序列包含相同的短延迟动作,然后是缩小动作和缩小动作。缩小和放大的组合持续时间等于平移动作。不幸的是,这两个序列中的动作并不一致。相反,一个序列的一部分将运行,然后另一个序列的一部分将运行,最后它们以同步方式运行序列的最后一部分。以下是我正在使用的代码:

[self runAction:
         [CCSequence actions:
          [CCDelayTime actionWithDuration:0.5],
          [CCMoveBy actionWithDuration: 1.0f
                              position:ccp(-lastXPositionForCamera, 0)],
          [CCCallFunc actionWithTarget:self
                              selector:@selector(startOver)],
          nil]];

// Run a second action at the same time.
// This second action will cause the camera to zoom out and then back in
[self runAction:
     [CCSequence actions:
      [CCDelayTime actionWithDuration:0.5],
      [CCScaleTo actionWithDuration: 0.5f scale:0.5f],
      [CCScaleTo actionWithDuration: 0.5f scale:1.0f], nil]];
因此,发生的情况如下:有一个轻微的延迟后,相机缩小。相机缩小后,相机将开始从右向左平移,同时重新放大

如果我将初始CCDelayTime更改为0.4,则行为略有不同。在这种情况下,相机在短暂延迟后开始从右向左平移。然后在相机缩小时停止平移。最后,相机将恢复从右向左平移,同时放大


如果上面的代码没有任何错误,那么有没有更好的方法来实现由缩放动作和平移动作组成的平滑过渡?

这并不能解决两个动作的问题,但在您的情况下它会起作用

您可以在一个操作中调用平移和缩放操作,在延迟后使用CCSpawn。试试看:

[self runAction:
     [CCSequence actions:
      [CCDelayTime actionWithDuration:0.5],
      [CCSpawn actions:
       [CCSequence actions:
        [CCMoveBy actionWithDuration: 1.0f
                          position:ccp(-lastXPositionForCamera, 0)],
        [CCCallFunc actionWithTarget:self
                          selector:@selector(startOver)],
        nil],
       [CCSequence actions:
        [CCScaleTo actionWithDuration: 0.5f scale:0.5f],
        [CCScaleTo actionWithDuration: 0.5f scale:1.0f], nil]
       ,nil] ,nil];

不幸的是,这也会以同样的方式发生。它首先缩小。然后,当相机从右向左平移时,它同时放大。不同的持续时间可能是问题所在。尝试将CCMoveBy操作拆分为两个持续时间为0.5f的操作-第一个移动一半的距离,第二个移动一半的距离。@Smugbit Studio-这也不起作用。然而,奇怪的是,如果我将position:ccp(-lastXPositionForCamera,0)]更改为position:ccp(lastXPositionForCamera,0)],我会在相机移动时通过缩小得到平滑的过渡。不幸的是,相机的移动方向错误,但is确实表明可以同时进行缩放和平移操作。这可能是一个box2D错误,还是这指出了我的代码的问题?