Sprite Kit: SKSpriteNode setTexture Bug?

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Sprite Kit: SKSpriteNode setTexture Bug?

    Hallo Zusammen,

    ich beschäftige mich gerade mit Sprite Kit und bin auf ein merkwürdiges Verhalten gestoßen.
    Ich habe mir eine neue Klasse GameToken erstellt die von SKSpriteNode erbt. In GameToken stoße ich nach der Initialisierung einen Timer an.

    Quellcode

    1. stoneTimer = [NSTimer scheduledTimerWithTimeInterval:5.0 target:self selector:@selector(getStoned) userInfo:nil repeats:NO];
    2. - (void)getStoned
    3. {
    4. self.type = kStoneType;
    5. SKTexture *texture = [SKTexture textureWithImageNamed:@"stone.png"];
    6. [self setTexture:texture];
    7. NSLog(@"GameToker: gets STONED *******");
    8. }


    getStoned wird auch aufgerufen, aber die Textur ändert sich nicht. :(
    Wenn ich die Methode jedoch direkt auf der SKScene aufrufe, dann funktioniert alles.

    Quellcode

    1. - (void)testMethod
    2. {
    3. GameToken *token = [self.staticBalls lastObject];
    4. SKTexture *texture = [SKTexture textureWithImageNamed:@"stone.png"];
    5. [token setTexture:texture];
    6. }


    Hat jemand eine Idee warum das so sein könnte?

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von ioscampus ()

  • Vielleicht darf die Textur nur geändert werden, während die SpriteKit "Engine" am Werk ist - also innerhalb der "-update(ähnlichen)"- , Animations- und "-draw"- Methoden der SpriteKit Objekte, da z.B. nur genau dann zugriff auf den OGL-Context herrscht. Wie bereits angedeutet nur eine Vermutung, eventuell steht das auch in der Doku.
    Abhilfe würden SKActions schaffen im Schema Sequence( Wait(5), RunAction(getStone) ) .

    LG David