微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Cocos2D:直到我稍微移动地图,CCParallaxNode才会显示

如何解决Cocos2D:直到我稍微移动地图,CCParallaxNode才会显示

| 我正在使用Cocos2D 0.99.5。我有一个CCParallaxNode,其中添加了背景精灵。由于某些原因,直到我启动地图后,它们都不会显示。滚动随着玩家的动作缓慢移动。 我有这个添加到初始化:
    winSize = [CCDirector sharedDirector].winSize;

    bgMountainsMax = floor(winSize.width/240)+1;

    if((int)winSize.width%240 > 0){
        bgMountainsBumper = ((int)winSize.width%240)/bgMountainsMax;
    }else{
        bgMountainsBumper = 0;
    }

    backgroundNode = [CCParallaxNode node];
    [self addChild:backgroundNode z:-1];

    CGPoint mountainSpeed = ccp(0.5,0.5);

    bgMountains = [[NSMutableArray alloc] initWithCapacity: bgMountainsMax];

    for(int i=0; i<bgMountainsMax; ++i){
        mountain = [CCSprite spriteWithFile:@\"mountainBG1.png\"];
        mountain.opacity = 80;
        [bgMountains insertObject:mountain atIndex:i];

        [backgroundNode addChild:[bgMountains objectAtIndex:i] z:0 parallaxRatio:mountainSpeed positionOffset:ccp((240*i)+(bgMountainsBumper*i),98)];

    }
添加了更新:
    for (CCSprite *mountainNum in bgMountains) {
    if ([backgroundNode convertToWorldspace:mountainNum.position].x < -(240/2)) {
        [backgroundNode incrementOffset:ccp(winSize.width+(240),0) forChild:mountainNum];
    }

    if ([backgroundNode convertToWorldspace:mountainNum.position].x > winSize.width+(240/2)) {          
        [backgroundNode incrementOffset:ccp(-(winSize.width+240),0) forChild:mountainNum];
    }
}
    

解决方法

        我认为您应该在init结束时调用一次update函数
[backgroundNode incrementOffset:ccp(winSize.width+(240),0) forChild:mountainNum];
[backgroundNode incrementOffset:ccp(-(winSize.width+240),0) forChild:mountainNum];
如果没有条件,请先进行设置。     

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。