Как создать и нарисовать визуальный жест смахивания - PullRequest
0 голосов
/ 28 октября 2010

Я хотел бы попробовать реализовать визуальное перелистывание для проекта iPhone, как это делают в некоторых играх, например Fruit Ninja.Когда вы проводите пальцем по экрану, он оставляет след, который исчезает через некоторое время.Я думаю, что у вас может быть фиксированное количество точек в «цепочке», и когда новые точки добавляются спереди, старые удаляются сзади.Я могу видеть использование -touchesMoved для генерации новых точек и NSMutableArray для отслеживания точек.Я просто не могу представить, какой метод я бы использовал для рисования сегментов.Могу ли я сделать один CALayer и нарисовать линию, соединяющую активные точки?Или используйте какой-нибудь другой объект вида и соедините их вместе в точках ...

Есть идеи?

1 Ответ

0 голосов
/ 28 октября 2010

Нечто подобное сработало бы, если бы вы заполняли «точки» CGPoints.Предостережение: это быстрое вырезание, вставка и редактирование задания, поэтому, вероятно, будут ошибки.Также я использую stl :: vector для «точек».Вы можете использовать какую-то другую структуру.

CGContextRef context = UIGraphicsGetCurrentContext();
CGMutablePathRef dataPath = CGPathCreateMutable();
bool firstPoint = YES;

for (int i=0; i < points.size(); ++i)
    {
    CGPoint point = points[i];
    if (firstPoint)
        {
        CGPathMoveToPoint(dataPath, NULL, point.x, point.y);
        firstPoint = NO;
        }
    else
        {
        CGPathAddLineToPoint(dataPath, NULL, point.x, point.y);
        }
    }

CGContextSetRGBStrokeColor( context, 1.0, 0.0, 0.0, 1.0);
CGContextSetLineWidth( context, 5);
CGContextBeginPath( context );
CGContextAddPath( context, dataPath );
CGContextDrawPath( context, kCGPathStroke);

CGPathRelease(dataPath);
...