首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我的CCScene行为古怪吗?

我的CCScene行为古怪吗?
EN

Stack Overflow用户
提问于 2011-11-17 21:16:23
回答 1查看 357关注 0票数 0

在我的应用程序中,我注意到在我的CCScene中可能有些东西看起来不对。

我只解释三件事: 1.我的FPS在视图中没有显示,即使我是从我的UIViewController (我的CCLayer是它自己的类)做的。

我的.h类CCLayer如下所示:

代码语言:javascript
复制
@interface CCMyGame : CCLayer {

CCDirector* director = [CCDirector sharedDirector];
    [CCDirector setDirectorType:kCCDirectorTypeDisplayLink];
    [director setAnimationInterval:1.0/60];
    [director setOpenGLView:self.eaglView];
    [director setDisplayFPS:YES];
    [director runWithScene:[CCSceneGame scene]];

我看到了我的一个CCSprite,但仅此而已,我没有看到任何其他东西。

然后在我的CCLayer类中,我这样做是为了完全激活一个CCScene:

代码语言:javascript
复制
+(CCScene *) scene
{
    CCScene *scene = [CCScene node];
    CCSceneGame *layer = [CCSceneGame node];
    [scene addChild:layer];
    return scene;
}

为什么会这样呢?

  1. 我的游戏圈没人叫我。我是这样做的: 自调度:@selector(myGameLoop:);

然后,在我的游戏循环中,我NSLog它和日志从未显示在控制台中,所以我意识到它没有被调用。

另一件奇怪的事情是,即使我这样做,我的UIAccelerometer委托方法也不会被调用:

代码语言:javascript
复制
self.isAccelerometerEnabled = YES;
    [UIAccelerometer sharedAccelerometer].delegate = self;
    [UIAccelerometer sharedAccelerometer].updateInterval = 0.10f/4.0f;

有什么原因吗?

  1. 最后,除了我的一位CCSprites之外,没有一位在展示。我有一些像CCSprites一样添加的[self addChild:mySprite];,但是我没有看到它们。它们都附在b2Bodys上,有些是动画的,但我只看到一个CCSprite,我不知道为什么这是我看到的唯一一个。

有人知道这些事情为什么会发生吗?

Edit1:

#1:修好了!

2:,我正在这样做,但它仍然不起作用!我这么做是为了安排:

代码语言:javascript
复制
[self schedule:@selector(cocosgameLoop:)];

这是我的方法:

代码语言:javascript
复制
    -(void)cocosgameLoop:(ccTime)delta {
    NSLog(@"cocosgameLoop");
}

NSLog是不会被呼叫的。当你向我展示第二种方法时,它不会像通常的游戏循环那样得到更新,这只会使方法被调用一次。为什么那个方法没有被调用?

奇怪的是,我的UIAccelerometer委托方法仍然没有被调用!我现在这样做:

代码语言:javascript
复制
self.isAccelerometerEnabled = YES;
[UIAccelerometer sharedAccelerometer].updateInterval = 1/30.0f;

我NSLogged我的UIAccelerometer委托方法,但它似乎仍然没有被调用:

代码语言:javascript
复制
- (void)accelerometer:(UIAccelerometer *)accelerometer didAccelerate:(UIAcceleration *)acceleration {
    NSLog(@"accelerometer");
}

Edit2:现在看来,如果我这样做了,UIAccelerometer方法就会被调用:

代码语言:javascript
复制
[[UIAccelerometer sharedAccelerometer] setDelegate:self];
[[UIAccelerometer sharedAccelerometer] setUpdateInterval:1/60];

为什么会这样?我想我在某个地方读到我的层没有被添加到我的层次结构中,是这样的吗?我从这里得到了这个想法,也许这就是为什么所有这些问题都会发生:http://www.cocos2d-iphone.org/forum/topic/13988

#3: My CCSprites不是跟随b2Body,而是相反。你给我的代码是:b2Body动画?

我正在设置我的CCSprites的位置像UIKit方式,也许这就是原因。下面是一个没有显示出来的精灵的例子:

代码语言:javascript
复制
CGPoint point = CGPointMake(50, 50);
point = [[CCDirector sharedDirector] convertToGL:point];
[sprite setPosition:point];
[self addChild:sprite z:1 tag:1];
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-11-17 22:04:06

缺少FPS显示:您需要将"fps_images.png“添加到项目中。

如果您计划此选择器:

代码语言:javascript
复制
[self schedule:@selector(myGameLoop:)];

确保该方法按以下方式实现:

代码语言:javascript
复制
-(void) myGameLoop:(ccTime)delta
{
}

标准的方法就是打电话

代码语言:javascript
复制
[self scheduleSelector];

并执行:

代码语言:javascript
复制
-(void) update:(ccTime)delta
{
}

它的速度也很小。

此外,使用断点测试一行代码是否被调用。如果您不是介绍Xcode调试,请阅读本指南。

通过启用加速度计和设置UIAccelerometer委托,您正在尝试通过Cocos2D和UIAccelerometer接收加速度计事件。只选一个:

代码语言:javascript
复制
self.isAccelerometerEnabled = YES;
[UIAccelerometer sharedAccelerometer].updateInterval = 1/30.0f;

另外,updateInterval 10/4 = 2.5…这意味着你最多每2.5秒就会收到一次加速度计事件。你会希望这个数字是一个零下一秒的数字,比如0.1或更少。

如果附着在b2Bodies上的精灵不可见,请检查它们的位置。我有一种预感,你忘了把Box2D米坐标转换成像素坐标。如果这些精灵没有连接到Box2D身体,那么试着测试它们是否出现。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8174425

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档