2013-06-28 30 views
3

我启用setIsTouchEnabled(true);但我无法检测触摸开始和触摸结束在cocos2d-android。ccTouchesBegan不工作在cocos2d-android

我gamelayer是

public class GameLayer extends CCColorLayer 
{ 
    protected CCLabel _label; 

    public static CCScene scene() 
    { 
    CCScene scene = CCScene.node(); 
    GameLayer layer = new GameLayer(ccColor4B.ccc4(90, 90, 255, 255)); 
    layer.getLabel(); 

    scene.addChild(layer); 
    return scene; 

} 

public CCLabel getLabel() 
{ 
    return _label; 

} 

protected GameLayer(ccColor4B color) 
{ 
    super(color); 
    this.setIsTouchEnabled(true); 
    CGSize winSize = CCDirector.sharedDirector().displaySize(); 
    Context context = CCDirector.sharedDirector().getActivity(); 
    _label = CCLabel.makeLabel("Tap On Me to START the game", "DroidSans", 32); 
    _label.setColor(ccColor3B.ccBLACK); 
    _label.setPosition(winSize.width/2, winSize.height/2); 

    addChild(_label); 

} 

@Override 
public boolean ccTouchesBegan(MotionEvent event) 
{ 

    CGRect projectileRect = CGRect.make(_label.getPosition().x,_label.getPosition().y, _label.getContentSize().width,_label.getContentSize().height); 
    CGPoint touchLocation = CGPoint.ccp(event.getX(), event.getY()); 
    CGRect targetRect = CGRect.make(event.getX(), event.getY(), 20, 20); 
    System.out.print(":touch Points are - :"+projectileRect+" _ - _ "+touchLocation+" _ - _ "+targetRect); 
    if (CGRect.intersects(projectileRect, targetRect)) 
    { 
     System.err.print(": This is intersect function from App :"); 
    } 
    return true; 

} 

@Override 
public boolean ccTouchesEnded(MotionEvent event) 
{ 
    // Choose one of the touches to work with 
    CGPoint location = CCDirector.sharedDirector().convertToGL(CGPoint.ccp(50, 200)); 
    System.out.printf("Got touch ", location); 
    CGSize winSize = CCDirector.sharedDirector().displaySize(); 

    return true; 

} 
} 

可以在任何一个数字我在哪里,我错了?我没有收到任何错误,没有在logcat中记录任何错误

+0

Log.e( “AM”,” “+ touchLocation);把这段代码放在CGPoint之后,并检查你是否获得了触摸的价值? –

回答

0

您的代码很好,只需使用System.out.println()函数将文本输出到控制台而不是System.out.printf(), System.err.print()。当我替换它们时,文本出现在控制台中。

此:

System.out.print(":touch Points are - :"+projectileRect+" _ - _ "+touchLocation+" _ - _ "+targetRect); 

变化:

System.out.println(":touch Points are - :"+projectileRect+" _ - _ "+touchLocation+" _ - _ "+targetRect); 

这:

System.err.print(": This is intersect function from App :"); 

变化:

System.out.println(": This is intersect function from App :"); 

这也太:

System.out.printf("Got touch ", location); 

变化:

System.out.println("Got touch " + location); 
0

您需要添加这在构造:

this.setIsTouchEnabled(true);