2014-02-22 47 views
1

我目前使用Sprite Kit和Xcode來設計一款遊戲。我的性格通常是運行由兩個圖像的狀態 - 代碼如下:如何更改spritekit中'touchbegan'中的字符圖像?

bobSKTexture* Texture1 = [SKTexture textureWithImageNamed:@"bob1"]; 
bobTexture1.filteringMode = SKTextureFilteringNearest; 
SKTexture* bobTexture2 = [SKTexture textureWithImageNamed:@"bob2"]; 
bobTexture2.filteringMode = SKTextureFilteringNearest; 

SKAction* run = [SKAction repeatActionForever:[SKAction animateWithTextures:@[birdTexture1, birdTexture2] timePerFrame:0.2]]; 

_bob = [SKSpriteNode spriteNodeWithTexture:birdTexture1]; 
[_bob setScale:2.0]; 
_bob.position = CGPointMake(self.frame.size.width/4, CGRectGetMidY(self.frame)); 
[_bob runAction:run]; 

我想要的圖像時,觸摸到屏幕上發生的,只爲短時間內改變,然後我想它返回到上面的代碼。我怎樣才能做到這一點?

+0

我有稍微改變了我的答案。它現在能解決你的問題嗎? – Macro206

+1

非常感謝你 – user1483652

回答

2

正如詹尼斯K說,當你想要的形象改變,將會變得更容易做這樣的:

[_bob removeAllActions]; 
_bob.texture = [SKTexture textureWithImageNamed:NEW_TEXTURE]; 
[self performSelector:@selector(resetAnimation) withObject:nil afterDelay:2.0f]; 

NEW_TEXTURE就是希望它改變紋理/圖像的名稱。

self會現場或任何你調用代碼,使_bob

這是resetAnimation方法,在場景中定義或任何你調用代碼,使_bob

- (void)resetAnimation 
    { 
     SKAction* run = [SKAction repeatActionForever:[SKAction animateWithTextures:@[birdTexture1, birdTexture2] timePerFrame:0.2]]; 
     [_bob runAction:run]; 
    } 
+0

我會在無效重置動畫中添加nastier – user1483652

+0

我在哪裏添加NSTimer? – user1483652

+1

更改紋理(_bob.texture = ...)時,您可以「[_bob performSelector:@selector(resetAnimation)withObject:nil afterDelay:2.0f]」,在2秒後重置動畫。 –