Cocos2d v2.0 - 设置场景,图层,精灵等

时间:2012-07-20 06:34:12

标签: ios cocos2d-iphone scale layer scene

使用Cocos2d v2.0.0,进行了很多更改,很多人遇到了一些扩展问题和其他冲突......

如果他们阅读并测试Ray Wenderlich的伟大着作更为真实:学习Cocos2d:维京人很大,背景不居中,图像的后缀系统不起作用,......

那么,如何进行?

2 个答案:

答案 0 :(得分:4)

基本上,在创建新的cocos2d v2项目时,示例项目中已经告知了所有内容。 但是,我们中的一些人需要指出事情。

  • 适用于iPhone(非视网膜和视网膜)和iPad(非视网膜和视网膜)的图像后缀系统

查看AppDelegate.m的第68-71行 以下是您需要记住的内容:

  1. 您只需要致电

    CCSprite *mySprite = [CCSprite spriteWithFile:@"mySprite.png"];
    
  2. 如果(iPhone)blabla
  3. ,则不需要其他if(iPad)
  4. 确保您从AppDelegate.m调用图像68-71行(默认值: mySprite.png (iPhone)| mySprite-hd.png (iPhone)视网膜)| mySprite-ipad.png (iPad)| mySprite-ipadhd.png (iPad Retina)

    • 调用场景

    查看AppDelegate.m第76行

    1. 只需从您的班级调用场景功能(使用pushScene)

      [director_ pushScene: [MyScene scene]];
      

      • 将图层添加到场景类

      1. 假设使用+(CCSene *)场景函数调用场景类(这是cocos2d v2的一个好习惯)
      2. +(CCScene *) scene
        {
            // 'scene' is an autorelease object.
            CCScene *scene = [CCScene node];
        
            BackgroundLayer *backgroundLayer = [BackgroundLayer node];
            [scene addChild:backgroundLayer z:0];
        
            GameplayLayer *gameplayLayer = [GameplayLayer node];
            [scene addChild:gameplayLayer z:5];
        
            return scene;
        }
        

        • 从类中替换init函数(CCScene,CCLayer,...)

        这是来自cocos2d v2的扩展问题来自(但我不知道为什么)。

        1. 不是调用 - (id)init,而是调用

          -(void) onEnter{ //Do some sprite displaying with [self addChild:mySprite]; }
          
        2. 你仍然可以在显示精灵之前调用 - (id)init函数来处理你需要加载的其他东西。


          • 使用SneakyInput(操纵杆开源库)

          你可以在这里找到如何在cocos2d v2中使用sneakyinput:http://cl.ly/1J2D2z0f3o0r3h041o3o


          • 多点触控启用

          1. 将此行添加到您的图层(在+(CCScene *)场景函数中或其他位置)

            layer.isTouchEnabled = YES;
            
          2. 然后将其添加到相同的.m

            - (void)ccTouchesMoved:(NSSet *)touches withEvent:(UIEvent *)event 
            {
                NSArray *touchArray=[touches allObjects];
            
                if ([touchArray count] == 2)
                {
                    NSLog(@"2");
                }
                else if([touchArray count]==1)
                {
                    NSLog(@"1");
                }
            }
            
          3. 最后,转到AppDelegate.m并添加:

            [[CCDirector sharedDirector].view setMultipleTouchEnabled:YES];
            

          4. 我非常感谢cocos2d v2开发人员可以帮助发布有关如何使用cocos2d v2与v1相比的内容。

答案 1 :(得分:0)