Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.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
Function 如何创建循环和更改sprite的函数';什么位置?_Function_Loops_Cocos2d Iphone_Position_Ccsprite - Fatal编程技术网

Function 如何创建循环和更改sprite的函数';什么位置?

Function 如何创建循环和更改sprite的函数';什么位置?,function,loops,cocos2d-iphone,position,ccsprite,Function,Loops,Cocos2d Iphone,Position,Ccsprite,所以我需要一个功能或东西,可以使我的两个精灵上下移动,所有的时间!从应用程序开始,屏幕上没有触摸到任何东西 这是我试图做的,但由于它在我的init中,它只运行一次。。 我如何使这个循环成为它自己,使它看起来充满活力 if (bgSkyer == false) { [bg3 runAction:[CCMoveTo actionWithDuration:0.5 position:ccp(240,100)]]; [bg2 runAction:[CCMov

所以我需要一个功能或东西,可以使我的两个精灵上下移动,所有的时间!从应用程序开始,屏幕上没有触摸到任何东西

这是我试图做的,但由于它在我的init中,它只运行一次。。 我如何使这个循环成为它自己,使它看起来充满活力

if (bgSkyer == false) {
            [bg3 runAction:[CCMoveTo actionWithDuration:0.5 position:ccp(240,100)]];
            [bg2 runAction:[CCMoveTo actionWithDuration:1.5 position:ccp(240,95)]];
            bgSkyer = true;
        }else {
            [bg3 runAction:[CCMoveTo actionWithDuration:0.5 position:ccp(240,112)]];
            [bg2 runAction:[CCMoveTo actionWithDuration:1.5 position:ccp(240,80)]];
            bgSkyer = false;
        }

我想这可能就是你想要的:

if (bgSkyer == false) {
    CCMoveTo *moveOne = [CCMoveTo actionWithDuration:0.5 position:ccp(240,100)];
    CCRepeatForever *repeatOne = [CCRepeatForever actionWithAction:moveOne];
    [bg3 runAction:repeatOne];

    CCMoveTo *moveTwo = [CCMoveTo actionWithDuration:1.5 position:ccp(240,95)];
    CCRepeatForever *repeatTwo = [CCRepeatForever actionWithAction:moveTwo];
    [bg3 runAction:repeatTwo];
}else{
    //just repeat code, etc...
}

希望它能起作用

如Jebego的回答所示,您需要使用
CCRepeatForever
。但是,假设您使用
bgSkyer
作为在两个位置之间切换的标志,如果您将
CCRepeatForever
CCSequence
一起使用,我们可以使用跳过该标志,如下所示(为了清晰起见,可以使用显式变量,但如果您愿意,可以始终将它们合并为一行):

CCSequence
按顺序执行您一个接一个传递给它的操作,
CCRepeatForever
将永远重复该顺序,直到您在节点上调用
[node stopAllActions]
或直到节点被解除锁定。

加载所有UI元素后将其放入while(true)如何?@Adithya
while(正确)
是人们所说的无限循环,你不想在任何程序中使用它。至少,尝试
while(flag\u var)
,或者最好找到另一种不使用循环的方法。
CCMoveTo *moveTo_240_95 = [CCMoveTo actionWithDuration:1.5 position:ccp(240,95)];
CCMoveTo *moveTo_240_80 = [CCMoveTo actionWithDuration:1.5 position:ccp(240,80)];
CCSequence *actionsForBg2 = [CCSequence actions:moveTo_240_95, moveTo_240_80, nil];
CCAction *repeatForBg2 = [CCRepeatForever actionWithAction:actionsForBg2];
[bg2 runAction:repeatForBg2]

CCMoveTo *moveTo_240_100 = [CCMoveTo actionWithDuration:0.5 position:ccp(240,100)];
CCMoveTo *moveTo_240_112 = [CCMoveTo actionWithDuration:0.5 position:ccp(240,112)];
CCSequence *actionsForBg3 = [CCSequence actions:moveTo_240_100, moveTo_240_112, nil];
CCAction *repeatForBg3 = [CCRepeatForever actionWithAction:actionsForBg3];
[bg3 runAction:repeatForBg3]