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编程指南”!