加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

xcode – Cocos2D垂直滚动背景

发布时间:2020-12-14 17:48:43 所属栏目:百科 来源:网络整理
导读:我有三个图像(320×480),我试图在我的Cocos2D应用程序中垂直滚动. 在我的初始化方法中,我有以下内容: //adding background spritesbackground = [CCSprite spriteWithFile:@"BG1.png"];background2 = [CCSprite spriteWithFile:@"BG2.png"];//position back
我有三个图像(320×480),我试图在我的Cocos2D应用程序中垂直滚动.

在我的初始化方法中,我有以下内容:

//adding background sprites
background = [CCSprite spriteWithFile:@"BG1.png"];
background2 = [CCSprite spriteWithFile:@"BG2.png"];

//position background sprites
background.position = ccp(size.width,size.height/2);
background2.position = ccp(size.width,size.height*2);

//schedule to move background sprites
[self schedule:@selector(scroll:)];

//adding them to the main layer
[self addChild:background z:0];
[self addChild:background2 z:0];

这是我的滚动方法:

-(void) scroll:(ccTime)dt 
{
//move 30*dt px vertically
background.position = ccp(background.position.x,background.position.y - 30*dt);
background2.position = ccp(background2.position.x,background.position.y - 30*dt);

//reset offscreen position
if (background.position.y < 290)
{
    background.position = ccp(480/2,480);
}else if (background2.position.y < 290)
{
    background2.position = ccp(480/2,480);
}
}

目前正在发生的事情是我的第一张背景图像偏移了大约四分之一的屏幕(水平),并且它从屏幕底部开始向上四分之一,但它向下滚动.我的第二个背景图像实际上并没有产生,第一个图像只是在偏移时一遍又一遍地循环.有没有办法让两个图像在后台连续平滑循环,我将如何合并第三个图像?

另外,只是一个快速的问题,用名称中的数字命名对象(我认为它们是对象)是不好的(即background2 / background3)?

解决方法

在横向模式下测试水平滚动(你要做的就是将滚动从水平更改为垂直,你应该能够解决这个问题)不要忘记ccposition来自精灵的中间,而不是0,0的角度. ..:

CGSize size = [CCDirector sharedDirector].winSize;

    //adding background sprites
    background = [CCSprite spriteWithFile:@"tracktest.png"];
    background2 = [CCSprite spriteWithFile:@"tracktest.png"];
    [background.texture setAliasTexParameters];
    [background2.texture setAliasTexParameters];

    //position background sprites
    background.position = ccp(background.contentSize.height/2,background.contentSize.width/2);
    background2.position = ccp(size.width,0);

    //schedule to move background sprites
    [self schedule:@selector(scroll:)];

    //adding them to the main layer
    [self addChild:background z:0];
    [self addChild:background2 z:0];

-scroll方法:

-(void) scroll:(ccTime)dt 
{
        //move 30*dt px vertically
  if (background.position.x<background2.position.x){
      background.position = ccp(background.position.x - 30*dt,background.contentSize.height/2);
      background2.position = ccp(background.position.x+background.contentSize.width,background2.contentSize.height/2);
  }else{
      background2.position = ccp(background2.position.x- 30*dt,background2.contentSize.height/2);
      background.position = ccp(background2.position.x+background2.contentSize.width,background.contentSize.height/2);

  }

  //reset offscreen position
  if (background.position.x <-background.contentSize.width/2)
  {
      background.position = ccp(background2.position.x+background2.contentSize.width,background.contentSize.width/2);
  }else if (background2.position.x < -background2.contentSize.width/2)
  {
      background2.position = ccp(background.position.x+background.contentSize.width,background2.contentSize.width/2);
  }
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读