iOS Sprite Kit为什么我不能使用白色重复colorizeWithColor?

我正在尝试使用非缩放方法select精灵节点的方法。 我最喜欢的一种方法是用白色着色,从而突出显示节点。

但是,我似乎无法多次使用白色行为复制着色。 为什么我不能多次使用白色使用colorizeWithColor

这两个方法调用是相同的,除了使用的颜色。 如果我使用红色,灰色等,节点响应每次触摸闪烁。 但是,如果我使用白色,它只有一次,那么再也没有响应过。

 [self runAction:[SKAction colorizeWithColor:[SKColor lightGrayColor] colorBlendFactor:0.8 duration:0.6] completion:^{ [self runAction:[SKAction colorizeWithColorBlendFactor:0.0 duration:0.4]]; }]; [self runAction:[SKAction colorizeWithColor:[UIColor colorWithWhite:0.99 alpha:1.0] colorBlendFactor:0.8 duration:0.6] completion:^{ [self runAction:[SKAction colorizeWithColorBlendFactor:0.0 duration:0.4]]; }]; 

这非常有趣 – 我不确定我有答案。 使用白色着色会影响与其他颜色不同的节点。

如果您使用blueColor在sprite节点上blueColor并在模拟器中观看,则颜色将保持不变。

 [node runAction:[SKAction colorizeWithColor:[SKColor blueColor] colorBlendFactor:0.8 duration:0.6]]; 

但是,如果您使用whiteColor在精灵节点上执行着色并在模拟器中观察,它会自动展开(即使没有任何完成模块)。

 [node runAction:[SKAction colorizeWithColor:[SKColor whiteColor] colorBlendFactor:0.8 duration:0.6]]; 

我无法find为什么这可能是在文档/头文件的情况下。 仍在search中。

我build议你制作一种着色方法,例如:返回SKAction。

 -(SKAction*)colorizeChoosenSpriteNodeWithColor:(SKColor*)color { SKAction *changeColorAction = [SKAction colorizeWithColor:color colorBlendFactor:1.0 duration:0.3]; SKAction *waitAction = [SKAction waitForDuration:0.2]; SKAction *startingColorAction = [SKAction colorizeWithColorBlendFactor:0.0 duration:0.3]; SKAction *selectAction = [SKAction sequence:@[changeColorAction, waitAction, startingColorAction]]; return selectAction; } 

如果您使用SKColor或图片制作的SKSpriteNode,这很重要。 如果您尝试着色SKSpriteNode,如下所示:

 SKSpriteNode *node = [[SKSpriteNode alloc]initWithColor:[SKColor redcolor] size:CGSizeMake(8, 8)]; 

通过运行着色动作,你将改变这种颜色,并从上面的“startingColorAction”你不会使它到最近的颜色。

正如它在文档中所说的:“创build一个animation,一个精灵的颜色和混合因子。” 所以通过将这个Action运行到一个由SKColor创build的SKSpriteNode,它将改变颜色并且使用colorblendfactor 0.0来运行这个动作,它什么也不做。

使用此操作对由图像制作的精灵节点进行着色。 尝试testing它,看看会发生什么。

请先阅读“Sprite Kit编程指南”!