我一直试图让我的精神动起来,但它不会让步!我使用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]];
}
我可以看到精灵,但无论我做什么都不动。感谢。
答案 0 :(得分:1)
看起来你需要改变
CCSprite* faceeater = [CCSprite spriteWithFile:@"fe.png"];
到
faceeater = [CCSprite spriteWithFile:@"fe.png"];
看起来你有两个不同 这里是CCSprite * faceeater,init中是本地的, 以及在您的实施中定义的一个。 一个在这里:
@implementation HelloWorldLayer
{
CCSprite* faceeater ;
}
答案 1 :(得分:0)
nextFrame方法是否正在运行?检查断点。
ccTouchEnded会运行吗?检查断点。
是否有其他代码设置精灵的位置?您是否每帧都运行CCMoveXX方法?
注意:如果您在nextFrame中手动更新位置并同时运行CCMoveTo操作,则结果可能无法预测。