2015-05-04 43 views
0

我創建了一個SKAction組,在播放音效的同時更改SKSpriteNode圖像(alpha和旋轉)。但是,當我運行行動:播放聲音效果,但圖像保持不變。SpriteKit SKAction組正在運行,但SKSpriteNode圖像沒有受到影響

在我的子類SKSpriteNode(羊),我有以下的代碼,增加了另一個SKSpriteNode(食品)作爲一個孩子:

-(void)setupEatingAction 
{ 
    _grassEating = [SKSpriteNode spriteNodeWithImageNamed:@"SheepFood"]; 
    _grassEating.size = self.size; 
    _grassEating.anchorPoint = CGPointMake(0.5, 0.5); 
    _grassEating.alpha = 0.5; 
    _grassEating.zPosition = -1; 

    SKAction *fadeIn = [SKAction fadeInWithDuration:0.01]; 
    SKAction *soundFX = [SKAction playSoundFileNamed:@"Munching2s.mp3" waitForCompletion:NO]; 
    SKAction *rotate = [SKAction sequence:@[[SKAction rotateToAngle:degsToRads(-20.0) duration:kMovementAnimationInterval/4.0],[SKAction rotateToAngle:degsToRads(0.0) duration:kMovementAnimationInterval/4.0]]]; 
    SKAction *eatAction = [SKAction group:@[fadeIn,soundFX,rotate]]; 

    _grassEating.userData = [NSMutableDictionary dictionaryWithObject:eatAction forKey:KEY_EatAction]; 

    [self addChild:_grassEating]; 
} 

然後,當我想的行動小組來運行,我做了以下:

-(void)eat 
{ 
    if(![_grassEating actionForKey:KEY_EatAction]) 
    { 
     [_grassEating runAction:[_grassEating.userData objectForKey:KEY_EatAction] withKey:KEY_EatAction]; 
    } 
} 

_grassEating是我的父節點的屬性:

@property (nonatomic,retain) SKSpriteNode *grassEating; 

正如我SAI d,我可以聽到播放的聲音效果,但圖像沒有改變?!?對於我的生活,我無法弄清楚爲什麼,而且我花了很多時間試圖弄清楚發生了什麼......有什麼想法?

我還應該指出(雖然我不認爲與它有任何關係),這個問題出現在模擬器和硬件上 - 都運行iOS7。

我不知道,但如果這是相關iOS Spritekit Cannot Run SKAction on a Subclassed SKSpriteNode

,這是我能找到的最接近並不會出現相同的問題(表面上)。

+0

您是否嘗試過不將其保存到userData? – hamobi

+0

是的。原來我就是這麼做的。然後,在查看我已鏈接的線程後,我將其更改爲我提供的方法。兩種方法都給出了相同的結果 - 聲音,但沒有圖像變化。 – VariableSquid

+0

您是否嘗試過檢查_grassEating是否有效?嘗試將其設置爲隱藏或從其父項中將其刪除,以查看對精靈的引用是否正確。 – Wraithseeker

回答

0

發現問題。這是一個合乎邏輯的問題。 SKSpriteNode正在被添加並且聲音效果開始播放,但在下一幀中,精靈正在被刪除。 因此,看起來精靈沒有被顯示,但沒有時間進入視野。音效繼續播放,因此造成混亂。

相關問題