0

所以我正在使用 cocos2d 并试图在屏幕上拖动一个精灵,它在此之前工作..但我似乎无法弄清楚我做了什么让它不起作用。我看到调用了 ccTouchBegan 和 ccTouchEnd 方法,但没有调用 ccTouchMoved。

我尝试转换为 ccTouchesBegan、ccTouchesMoved 和 ccTouchesEnded,但仍然只看到调用了 Began 和 Ended 方法。显然,我已经在某处注释掉或更改了设置。我还注释掉了 [[CCTouchDispatch sharedDisptacher] ...]; 因为它使用 ccTouches 方法出错了,因为我相信它是原生的。

有人知道发生了什么吗?

4

2 回答 2

0

您可以使用 ccTouchMoved 轻松移动精灵。

请尝试以下代码。我做了一个简短的演示,以了解您的相同概念。这个对我有用。

- (void)ccTouchMoved:(UITouch *)touch withEvent:(UIEvent *)event
{
    NSSet *touches = [event allTouches];
    for (int i = 0; i < touches.count; i++) {

        UITouch *touch = [[touches allObjects] objectAtIndex:i];
        CGPoint touchLocation = [touch locationInView: [touch view]];
        CGPoint location = [[CCDirector sharedDirector]
                            convertToGL:touchLocation];
        if(CGRectContainsPoint([sprite boundingBox], location))
             sprite.position = ccp(location.x,location.y);
    }
}
于 2012-07-02T11:27:39.387 回答
0

您是否将自己添加为代表?

[[CCTouchDispatcher sharedDispatcher]addTargetedDelegate:self priority:0 swallowsTouches:NO];

然后试试这个:

- (void)ccTouchMoved:(UITouch *)touch withEvent:(UIEvent *)event
{

    CGPoint location = [touch locationInView: [touch view]];
    mySprite.position = location;
}
于 2012-06-23T01:16:11.670 回答