几天来,我一直在试图控制我的精灵触摸方法。我的目标是让另一个精灵弹出偏移到触摸的精灵。
我目前有一个用于此过程的半生不熟的代码,在其中我尝试了多种代码,请参见下面的链接,但没有一个有效。我的问题:
- 一旦触摸到屏幕上的精灵(CCTouchBegan 中的 NSLog 也不起作用),让 CCTouchBegan 运行方法 towerPositionTapped。
- 了解如何获取被触摸精灵的位置,以便可以在 towerPositionTapped 方法中使用它。
到目前为止,我在主层中的触摸特定代码:
-(void) registerWithTouchDispatcher{
[[[CCDirector sharedDirector] touchDispatcher] addTargetedDelegate:self priority:0
swallowsTouches:YES];
}
-(BOOL)ccTouchBegan:(UITouch *)touch withEvent:(UIEvent *)event{
CGPoint location = [touch locationInView: [touch view]];
location = [[CCDirector sharedDirector] convertToGL: location];
//_towersFromClass is an NSMutableArray with CCSprite objects
for(CCSprite *tb in _towersFromClass){
if(CGRectContainsPoint(tb.boundingBox,location)){
NSLog(@"sprite touched at %@", NSStringFromCGPoint(location));
[self towerPositionTapped]
return YES;
}
}
return NO;
}
当我单击任何精灵时,NSLog 检查最终不会显示。
对于 towerPositionTapped 方法,我不确定如何捕获触摸的位置(或记录触摸的精灵)以定位新的精灵。
towerPositionTapped.m
-(void)towerPositionTapped{
CCMenuItem *towerOption1 = [CCMenuItemImage itemWithNormalImage:@"tower.png" selectedImage:@"tower.png"];
towerOption1.position = /* place touched sprite location here, with an offset*/;
CCMenu *_towerOptionsMenu = [CCMenu menuWithItems: nil];
_towerOptionsMenu.position = CGPointZero;
[self addChild:_towerOptionsMenu z:5];
}
任何建设性的批评都是值得赞赏的。感谢您的时间。
我测试过的几个网站: