您可以通过调用默认的 cocos 方法来检查精灵的触摸
首先启用触摸(Cocos2D Touch HELP)
isTouchEnabled_=true;
之后在 ccToucesBegan 方法中,您可以检查触摸哪个精灵
(getBoundingBox() 返回 CGRect)
@Override
public boolean ccTouchesBegan(MotionEvent event) {
CGPoint convertedLocation = CCDirector.sharedDirector()
.convertToGL(CGPoint.make(event.getX(), event.getY()));
if(sprite.getBoundingBox().contains(convertedLocation.x,convertedLocation.y))
{
removeChild(sprite, true);
}
}
在您的程序中,您没有指定精灵图像,这里是触摸正常工作的示例图层类
public class TestLayer extends CCColorLayer{
protected CCSprite target; protected CGPoint location;
public static CCScene scene(){
CCScene scene = CCScene.node();
CCColorLayer layer = new TestLayer(ccColor4B.ccc4(0, 0, 255, 255));
scene.addChild(layer);
return scene;
}
protected TestLayer(ccColor4B color){
super(color);
this.setIsTouchEnabled(true);
target=CCSprite.sprite("bee_120.png");
addChild(target);
target.setPosition(100, 100);
// this.schedule("game", 3.0f);
}
@Override
public boolean ccTouchesBegan(MotionEvent event) {
location = CCDirector.sharedDirector().convertToGL(CGPoint.ccp(event.getX(), event.getY()));
if(CGRect.containsPoint(target.getBoundingBox(), location));
{
removeChild(target, true);
}
return true;
}
// public void game(float dt){
// addTarget();
// }
// protected void addTarget(){
// //some code of add the "target"
// }
}
在上面的代码中,只使用了一个精灵。要使用多个精灵,您必须像您所做的那样安排方法,但您必须检查您生成的所有精灵的触摸。您可以为此目的使用 ArrayList。