私のアプリケーションでは、私の CCScene で正しくないように見えるものがたくさんあることに気付きました。
3つのことを説明します:1.UIViewControllerからこれを行っても、FPSはビューのどこにも表示されません(私のCCLayerは独自のクラスです)
私の CCLayer クラスの .h は次のようになります。
@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 が 1 つ表示されますが、それだけです。他には何も表示されません。
次に、CCLayer クラスでこれを実行して、CCScene を完全にアクティブにします。
+(CCScene *) scene
{
CCScene *scene = [CCScene node];
CCSceneGame *layer = [CCSceneGame node];
[scene addChild:layer];
return scene;
}
どうしてこれなの?
ゲーム ループが呼び出されません。私はこれをやっています:
[セルフスケジュール:@selector(myGameLoop:)];
次に、ゲームループで NSLog を実行しましたが、ログがコンソールに表示されないため、呼び出されていないことに気付きました。
また、奇妙なことは、これを行っても UIAccelerometer デリゲート メソッドが呼び出されないことです。
self.isAccelerometerEnabled = YES;
[UIAccelerometer sharedAccelerometer].delegate = self;
[UIAccelerometer sharedAccelerometer].updateInterval = 0.10f/4.0f;
理由はありますか?
- そして最後に、私の CCSprites の 1 つだけが表示されています。私はいくつかのCCSpritesを追加
[self addChild:mySprite];
していますが、それらは表示されません。それらはすべて b2Bodys にアタッチされており、アニメーション化されているものもありますが、CCSprite が 1 つしか表示されず、なぜそれが唯一のものなのかわかりません。
なぜこれらのことが起こっているのか、誰にも考えがありますか?
編集1:
#1:修正!
#2: 私はそれをやっていますが、まだ機能していません!私はそれをスケジュールするためにこれを行います:
[self schedule:@selector(cocosgameLoop:)];
これは私の方法です:
-(void)cocosgameLoop:(ccTime)delta {
NSLog(@"cocosgameLoop");
}
その NSLog が呼び出されていません。そして、あなたが私に 2 番目の方法を示したとき、それは通常のゲーム ループのように更新されず、メソッドが 1 回だけ呼び出されます。そのメソッドが呼び出されないのはなぜですか?
また、奇妙なことに、私の UIAccelerometer デリゲート メソッドがまだ呼び出されていません。私は今これをやっています:
self.isAccelerometerEnabled = YES;
[UIAccelerometer sharedAccelerometer].updateInterval = 1/30.0f;
そして、UIAccelerometer デリゲート メソッドを NSLogged しましたが、まだ呼び出されているようには見えません。
- (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:私の CCSprite は b2Body に従っていません。代わりに、その逆です。あなたは私にそのコードを教えてくれました: b2Body Animation?
UIKit の方法のように CCSprites の位置を設定しています。おそらくそれが理由です。以下は、表示されないスプライトの 1 つの例です。
CGPoint point = CGPointMake(50, 50);
point = [[CCDirector sharedDirector] convertToGL:point];
[sprite setPosition:point];
[self addChild:sprite z:1 tag:1];