0

私は自分の精神を動かそうとしてきましたが、それは動揺しません!cocos2d v2.1 beta 2とios6を使用していますが、これはスプライトを移動するために使用しているコードですが、何が問題になっていますか?

#import "CCTouchDispatcher.h"
 CCSprite *faceeater;

 -(id) init
 {

if( (self=[super init]) ) {
}


CCSprite* faceeater = [CCSprite spriteWithFile:@"fe.png"];
faceeater.position =  ccp( 200, 300 );
[self addChild:faceeater];
[self schedule:@selector(nextFrame:)];

[[CCDirector sharedDirector] touchDispatcher];

self.isTouchEnabled = YES;

  return self;

 }



 - (void) nextFrame:(ccTime)dt {
faceeater.position = ccp( faceeater.position.x + 100*dt, faceeater.position.y );
if (faceeater.position.x > 480+32) {
    faceeater.position = ccp( -32, faceeater.position.y );
}
}
- (BOOL)ccTouchBegan:(UITouch *)touch withEvent:(UIEvent *)event {
return YES;
}

- (void)ccTouchEnded:(UITouch *)touch withEvent:(UIEvent *)event {
CGPoint location = [self convertTouchToNodeSpace: touch];

[faceeater stopAllActions];
[faceeater runAction: [CCMoveTo actionWithDuration:1 position:location]];
 }

スプライトは見えますが、何をしても動かない。ありがとう。

4

2 に答える 2

1

変更する必要があるようです

CCSprite* faceeater = [CCSprite spriteWithFile:@"fe.png"];

faceeater = [CCSprite spriteWithFile:@"fe.png"];

ここには2つの異なるCCSprite*フェイスイーターがあります。1つはinitにローカルで、もう1つは実装で定義されています。ここに1つ:

@implementation HelloWorldLayer
{
CCSprite* faceeater ;
}
于 2012-09-30T10:52:14.247 に答える
0

nextFrameメソッドは実行されていますか?ブレークポイントで確認してください。

ccTouchEndedは実行されますか?ブレークポイントで確認してください。

他のコードはスプライトの位置を設定しますか?フレームごとにCCMoveXXメソッドを実行している可能性がありますか?

注:nextFrameで位置を手動で更新し、同時にCCMoveToアクションを実行すると、結果が予測できない可能性があります。

于 2012-09-29T19:51:45.687 に答える