Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/116.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_Objective C_Cocos2d Iphone_Spritebuilder - Fatal编程技术网

Ios cocos2d无限循环博弈中的缺口

Ios cocos2d无限循环博弈中的缺口,ios,objective-c,cocos2d-iphone,spritebuilder,Ios,Objective C,Cocos2d Iphone,Spritebuilder,我用这段代码实现无限循环,但每次屏幕外图像坐标改变时,我都会有1-2秒的间隔。为什么它们会出现?如何修复它?我也在使用SpriteBuilder #import "MainScene.h" static const CGFloat scrollSpeed =100.f; @implementation MainScene{ CCPhysicsNode *_world; CCNode *_oneb; CCNode *_twob; NSArray *_bb; }

我用这段代码实现无限循环,但每次屏幕外图像坐标改变时,我都会有1-2秒的间隔。为什么它们会出现?如何修复它?我也在使用SpriteBuilder

#import "MainScene.h"
static const CGFloat scrollSpeed =100.f;
@implementation MainScene{
 CCPhysicsNode *_world; 
    CCNode *_oneb;
    CCNode *_twob;
       NSArray *_bb;


}
- (void)didLoadFromCCB {
    _bb = @[_oneb, _twob];
}

-(void)update:(CCTime)delta{
  _world.position=ccp(_world.position.x - (scrollSpeed * delta), _world.position.y  ); // moving world
    for (CCNode *ground in _bb) {
        // get the world position of the ground
        CGPoint groundWorldPosition = [_world convertToWorldSpace:ground.position];
        // get the screen position of the ground
        CGPoint groundScreenPosition = [self convertToNodeSpace:groundWorldPosition];
        // if the left corner is one complete width off the screen, move it to the right
        if (groundScreenPosition.x <= (-1 * ground.contentSize.width)) {
            ground.position = ccp(ground.position.x + 2 * ground.contentSize.width, ground.position.y);
        }
    }
}

@end
#导入“mainsecene.h”
静态常数CGFloat scrollSpeed=100.f;
@实现主场景{
世界物理学会;
CCNode*\u oneb;
CCNode*_twob;
NSArray*_bb;
}
-(无效)从CCB处获得的数据{
_bb=@[_oneb,_twob];
}
-(无效)更新:(CCTime)增量{
_world.position=ccp(_world.position.x-(滚动速度*增量),_world.position.y);//移动世界
用于(CCNode*接地输入_bb){
//获取地面的世界位置
CGPoint groundWorldPosition=[[U world convertToWorldSpace:ground.position];
//获取地面的屏幕位置
CGPoint groundScreenPosition=[self-convertToNodeSpace:groundWorldPosition];
//如果左角离屏幕有一整宽,则将其移到右侧

如果(groundScreenPosition.x看起来您在iPhone 4英寸模拟器上使用的是iPhone 3.5英寸的小图像。您的背景图像的分辨率是多少

编辑:在我的游戏中,我也有一个无限循环。也许我的代码可以帮助你?第一个背景精灵应该是1137x640,第二个1136x640。你再也不会有空白了!希望它能帮助你

初始方法:

    backgroundSprite = [CCSprite spriteWithFile:@"background.png"];
    backgroundSprite.anchorPoint = ccp(0,0);
    backgroundSprite.position = ccp(0,0);
    [self addChild:backgroundSprite z:0];

    backgroundSprite2 = [CCSprite spriteWithFile:@"background2.png"]; 
    backgroundSprite2.anchorPoint = ccp(0,0);
    backgroundSprite2.position = ccp([backgroundSprite boundingBox].size.width,0);
    [self addChild:backgroundSprite2 z:0];
勾选方法:

backgroundSprite.position = ccp(backgroundSprite.position.x-1,backgroundSprite.position.y);
backgroundSprite2.position = ccp(backgroundSprite2.position.x-1,backgroundSprite2.position.y);

if (backgroundSprite.position.x<-[backgroundSprite boundingBox].size.width) {
    backgroundSprite.position = ccp(backgroundSprite2.position.x+[backgroundSprite2 boundingBox].size.width,backgroundSprite.position.y);
}

if (backgroundSprite2.position.x<-[backgroundSprite2 boundingBox].size.width) {
    backgroundSprite2.position = ccp(backgroundSprite.position.x+[backgroundSprite boundingBox].size.width,backgroundSprite2.position.y);
}
backgroundSprite.position=ccp(backgroundSprite.position.x-1,backgroundSprite.position.y);
backgroundSprite2.position=ccp(backgroundSprite2.position.x-1,backgroundSprite2.position.y);

如果(backgroundSprite.position.xBackground图像为640:1136。使用4英寸模拟器进行测试。我刚刚缩小了屏幕截图。在发布编辑后的答案之前,我找到了解决方案:)。我将“-1”值更改为“-0.5”。