デフォルトの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"
// }
}
上記のコードでは、1つのスプライトのみを使用しています。複数のスプライトを使用するには、これまでと同じようにメソッドをスケジュールする必要がありますが、生成したすべてのスプライトのタッチを確認する必要があります。その目的でArrayListを使用できます。