Откройте для себя эффект карты, используя CALayer, как Fog of War - PullRequest
0 голосов
/ 19 марта 2020

Я реализую игру, в которой пользователь может перемещаться на 2-й карте. Когда пользователь перемещается, я хочу показать ему новую часть карты (сначала карта полностью скрыта, и пользователь должен перемещаться, чтобы исследовать ее).

На данный момент я использовал CALayer, подобный этому:

- (void) updatePath:(CGPoint)point{
    [self.drawingPath addLineToPoint:point];
    [self setNeedsDisplay];
}

- (void) drawInContext:(CGContextRef)context{
    UIGraphicsPushContext(context);

    [[UIColor darkGrayColor] set];
    CGContextFillRect(context, self.bounds);

    CGContextSetBlendMode(context, kCGBlendModeClear);
    [self.drawingPath stroke];

    UIGraphicsPopContext();
}

Работает нормально, но через несколько ходов замедляет работу приложения. У DrawingPath слишком много точек, и рендеринг занимает слишком много времени.

Как сохранить предыдущее состояние и добавить в путь только новую точку?

Спасибо,

...