Cocos2d iphone COCOS2D。使用ccTouchMoved在屏幕上拖动CCSprite会使移动不平稳

Cocos2d iphone COCOS2D。使用ccTouchMoved在屏幕上拖动CCSprite会使移动不平稳,cocos2d-iphone,Cocos2d Iphone,我的方法有问题。我有3个CCSprite,我想用手指在屏幕上移动。问题是,如果我将鼠标指针移到fast,移动是不平稳的,有时甚至会在拖动图像时松开ccSprites的“抓地力” 我错过了什么 我使用的三种触摸方法具有以下任务: CCTouchBegined:放大正在触摸的ccSprite ccTouchMoved:在屏幕上移动被触摸的ccSprite ccTouchEnded:将ccSprite缩小到其原始大小并停止移动(是否有更好的方法将ccSprite缩小到其原始大小?) } } }将矢量从

我的方法有问题。我有3个CCSprite,我想用手指在屏幕上移动。问题是,如果我将鼠标指针移到fast,移动是不平稳的,有时甚至会在拖动图像时松开ccSprites的“抓地力”

我错过了什么

我使用的三种触摸方法具有以下任务:

CCTouchBegined:放大正在触摸的ccSprite

ccTouchMoved:在屏幕上移动被触摸的ccSprite

ccTouchEnded:将ccSprite缩小到其原始大小并停止移动(是否有更好的方法将ccSprite缩小到其原始大小?)

}

}


}

将矢量从精灵移动到触摸位置,并将其设置为精灵的方向,同时限制其速度。这样,变化就不会那么迅速和剧烈,运动看起来也会更平稳。不要求触摸位置始终位于精灵上方,只需跟踪是否正在进行拖动操作,以及正在拖动哪个精灵。

如果我听起来像个十足的傻瓜(尽管我是个傻瓜),很抱歉,但我不明白你的意思。我还在学习,所以你能用一个例子告诉我。。。
- (BOOL)ccTouchBegan:(UITouch *)touch withEvent:(UIEvent *)event{

CCLOG(@"ccTouchBeganRuby");

CGPoint location = [self convertTouchToNodeSpace: touch];

if(CGRectContainsPoint([animatingRuby1 boundingBox], location)){
    CCLOG(@"ccTouchEndedRubyScaleUp1");
    id ScaleAction1 = [CCScaleBy actionWithDuration:1 scale:1.2f ];
    [animatingRuby1 runAction:ScaleAction1];
}
if(CGRectContainsPoint([animatingRuby2 boundingBox], location)){
    CCLOG(@"ccTouchEndedRubyScaleUp2");
    id ScaleAction2 = [CCScaleBy actionWithDuration:1 scale:1.2f ];
    [animatingRuby2 runAction:ScaleAction2];
}
if(CGRectContainsPoint([animatingRuby3 boundingBox], location)){
    CCLOG(@"ccTouchEndedRubyScaleUp3");
    id ScaleAction3 = [CCScaleBy actionWithDuration:1 scale:1.2f ];
    [animatingRuby3 runAction:ScaleAction3];
}

return YES;
- (void)ccTouchMoved:(UITouch *)touches withEvent:(UIEvent *) event{

CCLOG(@"ccTouchMovedRuby");

if (CGRectContainsPoint([animatingRuby1 boundingBox], location)) {
    CCLOG (@"moveRubies1");
    if((CGRectContainsPoint([animatingRuby2 boundingBox], location))|| (CGRectContainsPoint([animatingRuby1 boundingBox], location))) {
        return;
    }
    animatingRuby1.position = location;

}
if (CGRectContainsPoint([animatingRuby2 boundingBox], location)) {
    CCLOG (@"moveRubies2");
    if((CGRectContainsPoint([animatingRuby1 boundingBox], location))|| (CGRectContainsPoint([animatingRuby3 boundingBox], location))) {
        return;
    }
    animatingRuby2.position = location;
}
if (CGRectContainsPoint([animatingRuby3 boundingBox], location)) {
    CCLOG (@"moveRubies3");
    if((CGRectContainsPoint([animatingRuby1 boundingBox], location))|| (CGRectContainsPoint([animatingRuby2 boundingBox], location))) {
        return;
    }
    animatingRuby3.position = location;

}
[self collidableWithEachOther:location];
- (void)ccTouchEnded:(UITouch *)touch withEvent:(UIEvent *) event{
CGSize screenSize = [[CCDirector sharedDirector] winSize]; 
CCLOG(@"ccTouchEndedRuby");
CGPoint location = [self convertTouchToNodeSpace: touch];

if(CGRectContainsPoint([animatingRuby1 boundingBox], location)){
    CCLOG(@"ccTouchEndedRubyScaleDown1");
    [animatingRuby1 setScaleX:screenSize.width/14850.0f]; 
    [animatingRuby1 setScaleY:screenSize.height/9552.0f];

}
if(CGRectContainsPoint([animatingRuby2 boundingBox], location)){
    CCLOG(@"ccTouchEndedRubyScaleDown2");
    [animatingRuby2 setScaleX:screenSize.width/14850.0f]; 
    [animatingRuby2 setScaleY:screenSize.height/9552.0f];
}
if(CGRectContainsPoint([animatingRuby3 boundingBox], location)){
    CCLOG(@"ccTouchEndedRubyScaleDown3");
    [animatingRuby3 setScaleX:screenSize.width/14850.0f]; 
    [animatingRuby3 setScaleY:screenSize.height/9552.0f];
}