0

我正在尝试添加一个“白板”,以便人们可以在上面画线。

唯一的问题是,如果我画得非常快,它会将精灵间隔得很远,所以如果他们试图画字母或数字,它甚至都难以辨认。不同的精灵之间有很多空间。

这是我认为大部分绘图发生的方法。

-(void) update:(ccTime)delta
    {
        CCDirector* director = [CCDirector sharedDirector];
        CCRenderTexture* rtx = (CCRenderTexture*)[self getChildByTag:1];

        // explicitly don't clear the rendertexture
        [rtx begin];

        for (UITouch* touch in touches)
        {
            CGPoint touchLocation = [director convertToGL:[touch locationInView:director.openGLView]];
touchLocation = [rtx.sprite convertToNodeSpace:touchLocation];

        // because the rendertexture sprite is flipped along its Y axis the Y coordinate must be flipped:
        touchLocation.y = rtx.sprite.contentSize.height - touchLocation.y;


        CCSprite* sprite = [[CCSprite alloc] initWithFile:@"Cube_Ones.png"];
        sprite.position = touchLocation;
        sprite.scale = 0.1f;
        [self addChild:sprite];
        [placedSprites addObject:sprite];
    }

    [rtx end];
}


Maybe this is the cause?

[self scheduleUpdate];  

我不完全确定如何减少更新之间的时间。

提前致谢

4

1 回答 1

1

问题只是用户可以在两个触摸事件之间将触摸位置(即他/她的手指)移动很远的距离。您可能会收到一个 100x100 的事件,而下一个手指已经在 300x300。你对此无能为力。

但是,您可以假设两个触摸位置之间的变化是线性移动。这意味着您可以简单地拆分任何两个相距超过 10 像素距离的触摸,并将它们拆分为 10 像素距离间隔。因此,您实际上会自己生成中间触摸位置。

如果这样做,最好限制两次触摸之间的最小距离,否则用户可能会在非常小的区域内绘制大量精灵,这不是您想要的。因此,如果新的触摸位置与前一个触摸位置相距 5 个像素,您只会绘制一个新的精灵。

于 2012-09-15T08:07:45.327 回答