【问题标题】:Cocos2d v2.0 - Set Up Scenes, Layers, Sprites, etcCocos2d v2.0 - 设置场景、图层、精灵等
【发布时间】:2012-07-20 06:34:12
【问题描述】:

在 Cocos2d v2.0.0 中,进行了很多更改,很多人遇到了一些缩放问题和其他冲突......

如果他们阅读并测试了 Ray Wenderlich 的好书,那就更是如此:学习 Cocos2d:维京人太大,背景不居中,图像后缀系统不起作用,...

那么,如何进行呢?

【问题讨论】:

  • 你能添加一个链接到人们说他们有这些问题的地方吗?因为如果有人发现这个问题并且有同样的问题,他们可能想阅读其他人的经验,就像你说的那样,通常这些问题的解决方案可以在同一篇文章中找到。此外,它验证了您的观点,即“很多人”都遇到了问题。我没听说过很多。

标签: ios cocos2d-iphone scale layer scene


【解决方案1】:

基本上,在创建新的 cocos2d v2 项目时,样例项目中已经说明了一切。 但是,我们中的一些人需要指出一些事情。

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

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

  1. 你只需要打电话

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


  • 调用场景

从 AppDelegate.m 中查看第 76 行

  1. 只需从您的类中调用场景函数(使用 pushScene)

    [director_ pushScene: [MyScene scene]];
    


  • 向场景类添加图层

  1. 假设您的场景类是使用 +(CCSene*)scene 函数调用的(这对于 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;
    }
    


  • 从您的类(CCScene、CCLayer、...)中替换 init 函数

这就是来自 cocos2d v2 的缩放问题的来源(但我不知道为什么)。

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

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


  • 使用 SneakyInput(Joystick 开源库)

你可以在这里找到如何在 cocos2d v2 中使用偷偷摸摸的输入: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];
    


如果 cocos2d v2 开发人员可以提供帮助并发布有关如何使用 cocos2d v2 与 v1 的内容,我将不胜感激。

【讨论】:

  • 老实说,除了初始旋转问题(winSize 报告第一个场景的 init 和 onEnter 中的不同尺寸)cocos2d 2.0 的行为与 1.0 完全相同。使用 pushScene 似乎是可选的,replaceScene 仍然可以使用。至于 SneakyInput,只有 Non-Skinned(CircleButton 什么的)类不能用,把它们放在项目之外,使用“Skinned”类。
【解决方案2】:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-10
    • 1970-01-01
    相关资源
    最近更新 更多