我有一個小遊戲的工作,我的節點是移動這樣的:如何避免SKNode眨眼時,我刪除移動節點?
SKAction * actionMove = [SKAction moveToY:HEIGHT + self.frame.size.height/2 duration:actualDuration];
[self runAction:[SKAction sequence:@[actionMove, loseAction]] withKey:@"start"];
,我dissmiss從另一種觀點認爲,它只是叫這樣的:
- (void)dissmissBubbleWithType:(BubbleType)type{
__block BOOL isDismiss = NO;
NSString *name = [[ResManager sharedManager] nameFromBubbleType:type];
[self enumerateChildNodesWithName:name usingBlock:^(SKNode * _Nonnull node, BOOL * _Nonnull stop) {
BubbleNode *bubbleNode = (BubbleNode *)node;
isDismiss = YES;
[bubbleNode cracked];
}];
if (isDismiss) {
[self.bubbleDelegate dismissBubbleWithType:type];
}
}
當我解僱一個類型時,我使用enumerateChildNodesWithName usingBlock 來移除我的節點;
這是bubbleNode破解,我用它來播放gif並將其刪除;
- (void)cracked{
self.name = @"cracked";
[self removeAllActions];
SKAction * actionMoveDone = [SKAction animateWithTextures:[ResManager sharedManager].bubbleCrackArray timePerFrame:0.2];
SKAction *done = [SKAction removeFromParent];
[self runAction:[SKAction sequence:@[actionMoveDone,done]]];
}
現在的問題是,當我叫dissmissBubbleWithType,節點眨眼到舊位置。 我認爲原因是當我調用dissmissBubbleWithType和enumerateChildNodesWithName:name時,節點的position.y是100,但是在它刪除的時候,position.y是90(因爲它正在移動)。 我嘗試了一些辦法,如 1.removeAllActions然後播放GIF 2.removeFromParent無間隙GIF 3.使用的foreach在scene.children 但它仍然閃爍
所以皮斯幫助我,非常感謝:)