Почему [Skaction Scalexto: продолжительность:] не вызывает установку XScale?
-
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:
, которое устанавливает свойство узла через блок.Или вы можете подкласс узел, добавить предыдущую вагонку и периодически проверять, изменилось ли исходное масштаб, сравнивая его со свойством предыдущего языка.