Pregunta

Tengo la costumbre de tener un nodo que tiene una reemplazado xScale setter.E. g.:

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

Si me puse el xScale propiedad manualmente, entonces puedo ver el setter se acciona.

Sin embargo, si yo escala el nodo a través de una acción, por ejemplo:

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

entonces, aunque el nodo es escalan correctamente, el setter nunca se invoca.

¿Alguien sabe por qué no?¿Cómo funciona el SKScale acción de cambiar el nodo de la escala?

¿Fue útil?

Solución

Internamente Sprite Kit utiliza un C++ motor de render.Mi observación es que SKAction omite completamente el Objetivo-C capa y en su lugar va a cambiar directamente a las propiedades de las clases de C++.Probablemente para mejorar el rendimiento de las acciones.

Si desea observar dichos cambios de uso de un customActionWithDuration:actionBlock: la acción que establece el nodo de la propiedad a través del bloque.O usted puede crear una subclase de los nodos, añadir un previousScale propiedad y comprobar periódicamente si la escala original ha cambiado en comparación con el previousScale de la propiedad.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top