我創建了一個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
,這是我能找到的最接近並不會出現相同的問題(表面上)。
您是否嘗試過不將其保存到userData? – hamobi
是的。原來我就是這麼做的。然後,在查看我已鏈接的線程後,我將其更改爲我提供的方法。兩種方法都給出了相同的結果 - 聲音,但沒有圖像變化。 – VariableSquid
您是否嘗試過檢查_grassEating是否有效?嘗試將其設置爲隱藏或從其父項中將其刪除,以查看對精靈的引用是否正確。 – Wraithseeker