Рисование прямой линии с помощью spritekit и UITouch создает несколько линий

Должно быть просто.

Я пытаюсь нарисовать одну прямую линию, используя UITouch и Spritekit. Однако при вызове touchesmoved создается несколько строк вместо одной. Используемый код приведен ниже:

-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
    UITouch *touch = [touches anyObject];
    positionInScene1 = [touch locationInNode:self];

    pathToDraw = CGPathCreateMutable();

    selectorLine = [SKShapeNode node];
    selectorLine.strokeColor = [SKColor greenColor];
    selectorLine.lineWidth = 5;
    [self addChild:selectorLine];
}

-(void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event
{
    pathToDraw2 = CGPathCreateMutable();
    UITouch* touch = [touches anyObject];
    positionInScene2 = [touch locationInNode:self];

    CGPathMoveToPoint(pathToDraw2, NULL, positionInScene1.x, positionInScene1.y);
    CGPathAddLineToPoint(pathToDraw2, NULL, positionInScene2.x, positionInScene2.y);
    CGPathCloseSubpath(pathToDraw);

    selectorLine.path = pathToDraw;
}

Если я перееду

CGPathAddLineToPoint(pathToDraw, NULL, positionInScene2.x, positionInScene2.y);

для touchesEnd создается одна строка, но только после того, как пользователь завершит касание. Я хочу, чтобы пользователь видел, как линия рисуется при касании.

Спасибо, Дуг


person Doug    schedule 12.03.2014    source источник
comment
несколько строк откуда куда? Дополнительные линии, каждая из которых начинается от начальной точки до текущего местоположения касания, или дополнительные линии между предыдущим и текущим местоположением касания?   -  person LearnCocos2D    schedule 12.03.2014


Ответы (1)


Создайте новый путь в файле touchesMoved. Вы изменяете один и тот же путь и просто добавляете к нему все новые и новые строки.

person Theis Egeberg    schedule 12.03.2014
comment
Не могу поверить, что я пропустил это! Спасибо Тайс. Надеюсь, приведенный выше код поможет другим начинающим разработчикам sprtiekit. - person Doug; 12.03.2014