Question

J'ai un nœud personnalisé qui a un setter xScale remplacé.Par exemple.:

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

Si je définis la propriété xScale manuellement, je peux voir le setter se déclencher.

Cependant, si je fais évoluer le nœud via une action, par exemple :

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

alors même si le nœud est correctement mis à l'échelle, le setter n'est jamais invoqué.

Est-ce que quelqu'un sait pourquoi pas ?Comment l'action SKScale modifie-t-elle l'échelle du nœud ?

Était-ce utile?

La solution

En interne, Sprite Kit utilise un moteur de rendu C++.Mon observation est que SKAction contourne complètement la couche Objective-C et modifiera les propriétés directement sur les classes C++.Susceptible d’améliorer la performance des actions.

Si vous souhaitez observer de tels changements, utilisez un customActionWithDuration:actionBlock: action qui définit la propriété du nœud via le bloc.Vous pouvez également sous-classer le nœud, ajouter une propriété previousScale et vérifier périodiquement si l'échelle d'origine a changé en la comparant avec la propriété previousScale.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top