在我的应用程序中,我注意到在我的CCScene中可能有些东西看起来不对。
我只解释三件事: 1.我的FPS在视图中没有显示,即使我是从我的UIViewController (我的CCLayer是它自己的类)做的。
我的.h类CCLayer如下所示:
@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:
+(CCScene *) scene
{
CCScene *scene = [CCScene node];
CCSceneGame *layer = [CCSceneGame node];
[scene addChild:layer];
return scene;
}为什么会这样呢?
然后,在我的游戏循环中,我NSLog它和日志从未显示在控制台中,所以我意识到它没有被调用。
另一件奇怪的事情是,即使我这样做,我的UIAccelerometer委托方法也不会被调用:
self.isAccelerometerEnabled = YES;
[UIAccelerometer sharedAccelerometer].delegate = self;
[UIAccelerometer sharedAccelerometer].updateInterval = 0.10f/4.0f;有什么原因吗?
[self addChild:mySprite];,但是我没有看到它们。它们都附在b2Bodys上,有些是动画的,但我只看到一个CCSprite,我不知道为什么这是我看到的唯一一个。有人知道这些事情为什么会发生吗?
Edit1:
#1:修好了!
2:,我正在这样做,但它仍然不起作用!我这么做是为了安排:
[self schedule:@selector(cocosgameLoop:)];这是我的方法:
-(void)cocosgameLoop:(ccTime)delta {
NSLog(@"cocosgameLoop");
}NSLog是不会被呼叫的。当你向我展示第二种方法时,它不会像通常的游戏循环那样得到更新,这只会使方法被调用一次。为什么那个方法没有被调用?
奇怪的是,我的UIAccelerometer委托方法仍然没有被调用!我现在这样做:
self.isAccelerometerEnabled = YES;
[UIAccelerometer sharedAccelerometer].updateInterval = 1/30.0f;我NSLogged我的UIAccelerometer委托方法,但它似乎仍然没有被调用:
- (void)accelerometer:(UIAccelerometer *)accelerometer didAccelerate:(UIAcceleration *)acceleration {
NSLog(@"accelerometer");
}Edit2:现在看来,如果我这样做了,UIAccelerometer方法就会被调用:
[[UIAccelerometer sharedAccelerometer] setDelegate:self];
[[UIAccelerometer sharedAccelerometer] setUpdateInterval:1/60];为什么会这样?我想我在某个地方读到我的层没有被添加到我的层次结构中,是这样的吗?我从这里得到了这个想法,也许这就是为什么所有这些问题都会发生:http://www.cocos2d-iphone.org/forum/topic/13988
#3: My CCSprites不是跟随b2Body,而是相反。你给我的代码是:b2Body动画?
我正在设置我的CCSprites的位置像UIKit方式,也许这就是原因。下面是一个没有显示出来的精灵的例子:
CGPoint point = CGPointMake(50, 50);
point = [[CCDirector sharedDirector] convertToGL:point];
[sprite setPosition:point];
[self addChild:sprite z:1 tag:1];发布于 2011-11-17 22:04:06
缺少FPS显示:您需要将"fps_images.png“添加到项目中。
如果您计划此选择器:
[self schedule:@selector(myGameLoop:)];确保该方法按以下方式实现:
-(void) myGameLoop:(ccTime)delta
{
}标准的方法就是打电话
[self scheduleSelector];并执行:
-(void) update:(ccTime)delta
{
}它的速度也很小。
此外,使用断点测试一行代码是否被调用。如果您不是介绍Xcode调试,请阅读本指南。
通过启用加速度计和设置UIAccelerometer委托,您正在尝试通过Cocos2D和UIAccelerometer接收加速度计事件。只选一个:
self.isAccelerometerEnabled = YES;
[UIAccelerometer sharedAccelerometer].updateInterval = 1/30.0f;另外,updateInterval 10/4 = 2.5…这意味着你最多每2.5秒就会收到一次加速度计事件。你会希望这个数字是一个零下一秒的数字,比如0.1或更少。
如果附着在b2Bodies上的精灵不可见,请检查它们的位置。我有一种预感,你忘了把Box2D米坐标转换成像素坐标。如果这些精灵没有连接到Box2D身体,那么试着测试它们是否出现。
https://stackoverflow.com/questions/8174425
复制相似问题