【发布时间】:2014-01-19 06:54:03
【问题描述】:
我正在使用 SpriteKit 开发游戏。我正在用 SKShapeNode 绘制一个形状。现在我想为其颜色变化设置动画,但 SKActions 不适用于 SKShapeNode。有什么方法可以做到这一点,还是我必须使用不同的方法?
谢谢。
编辑:
感谢LearnCocos2D,我能够想出这个快速(但并不完美)的解决方案。
int groundChangeInterval = 5;
SKColor *originalColor = [SKColor colorWithRed:0.92 green:0.87 blue:0.38 alpha:1.0];
SKColor *finalColor = [SKColor colorWithRed:0.29 green:0.89 blue:0.31 alpha:1.0];
CGFloat red1 = 0.0, green1 = 0.0, blue1 = 0.0, alpha1 = 0.0;
[originalColor getRed:&red1 green:&green1 blue:&blue1 alpha:&alpha1];
CGFloat red2 = 0.0, green2 = 0.0, blue2 = 0.0, alpha2 = 0.0;
[finalColor getRed:&red2 green:&green2 blue:&blue2 alpha:&alpha2];
SKAction *changeGroundColor = [SKAction customActionWithDuration:groundChangeInterval actionBlock:^(SKNode *node, CGFloat elapsedTime) {
CGFloat step = elapsedTime/groundChangeInterval;
CGFloat red3 = 0.0, green3 = 0.0, blue3 = 0.0;
red3 = red1-(red1-red2)*step;
green3 = green1-(green1-green2)*step;
blue3 = blue1-(blue1-blue2)*step;
[(SKShapeNode*)node setFillColor:[SKColor colorWithRed:red3 green:green3 blue:blue3 alpha:1.0]];
[(SKShapeNode*)node setStrokeColor:[SKColor colorWithRed:red3 green:green3 blue:blue3 alpha:1.0]];
}];
我只需要淡化两种特定的颜色,所以它不是一个通用的解决方案,但现在已经足够了。
谢谢
【问题讨论】:
标签: ios objective-c sprite-kit