gpt4 book ai didi

cocos2d-iphone - Cocos2D 2.0 与 1.0 相比的不同行为

转载 作者:行者123 更新时间:2023-12-04 05:37:26 25 4
gpt4 key购买 nike

我有几个用 Cocos2D 创建的应用程序。

我正在将其中一些升级到 Cocos2D 的新版本 2.0。我使用的方法是:

  • 我从标准模板
  • 创建了一个新的空白项目
  • 我将所有文件移动到新项目

  • 我通常将层 Helloworld 作为我的初始层。我注意到 Cocos2D 创建了一个 introLayer 作为初始层,我已经删除了它并恢复了加载 Helloworld 的行为。说到这里,我注意到了几点:
  • Helloworld 的 init 方法内部的行为现在有所不同。我注意到现在在 init 方法中错误地报告了方向。即使应用程序只是横向,它也会始终将其报告为纵向。我还注意到导演还没有完全初始化。如果我尝试使用导演的观点,这一点得到了证实。如果我尝试在 Helloworld 的 init 方法中使用它,这个 View 总是无效的。

  • 为了解决这个问题,我已将所有代码移至 Helloworld 的 onEnter 方法。现在,Helloworld 和 director 已经完全初始化,一切正常。

    这种方法适用于我为 Cocos2D 1.0 升级到 2.0 的第一个应用程序,但我现在从 Cocos2D 2.0beta 转换到 2.0 最终版本的应用程序出现了问题。

    我现在遇到的问题是 Helloworld 没有触发任何触摸,是的,我有这个:
    -(void) registerWithTouchDispatcher
    {
    [[[CCDirector sharedDirector] touchDispatcher] addTargetedDelegate:self priority:0 swallowsTouches:YES];
    }


    - (BOOL)ccTouchBegan:(UITouch *)touch withEvent:(UIEvent *)event {
    return YES;
    }

    什么可以阻止 Helloworld 在 2.0 中检测触摸?如何使 Helloworld 的 init 方法表现得像 2.0 beta 或 1.0?

    注意:加载 Helloworld 时永远不会调用 ccTouchBegan 和 registerWithTouchDispatcher。

    谢谢。

    最佳答案

    轮换问题是一个已知错误。第一个场景将以纵向模式初始化,即使应用程序设置为仅横向模式。这是因为初始化发生在应用委托(delegate)更新方向之前。将代码放入 onEnter 可以解决这个问题,或者只是加载一个“介绍”场景,然后加载实际的第一个场景也可以解决这个问题。

    触摸问题可能不是 cocos2d 2.0 的问题。也许就像不设置 self.isTouchEnabled = YES 一样简单.如果未调用 registerWithTouchDispatcher 方法,则 isTouchEnabled 未设置为 YES,或者您不是在 CCLayer 类中执行此操作,而是在 CCScene 中执行此操作。

    关于cocos2d-iphone - Cocos2D 2.0 与 1.0 相比的不同行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11747191/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com