Почему [Skaction Scalexto: продолжительность:] не вызывает установку XScale?

StackOverflow https://stackoverflow.com//questions/22015294

  •  21-12-2019
  •  | 
  •  

Вопрос

У меня есть пользовательский узел, который имеет переопределенную установку XSCALE.E.g.:

-(void)setXScale:(CGFloat)xScale
{
    [super setXScale:xScale];
    NSLog(@"Scale changed to: %f", xScale);
}
.

Если я установлю свойство Xscale вручную, то я могу видеть, что срабатывает спутник.

Однако, если я масштабирую узел через действие, например.:

[myCustomNode runAction:[SKAction scaleXTo:2.0f duration:0.5f]];
.

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

Никто знает почему нет?Как действие SKSCALE изменяет масштаб узла?

Это было полезно?

Решение

Набор для внутреннего спрайта использует двигатель C ++ Render.Мое наблюдение состоит в том, что Scepaction полностью обходит слой объекта-C и вместо этого будет изменять свойства непосредственно на классах C ++.Может повысить производительность действий.

Если вы хотите соблюдать такие изменения, используйте действие customActionWithDuration:actionBlock:, которое устанавливает свойство узла через блок.Или вы можете подкласс узел, добавить предыдущую вагонку и периодически проверять, изменилось ли исходное масштаб, сравнивая его со свойством предыдущего языка.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top