我想在Sprite Kit中创建自己的进度条.
我想我将需要图像 – 一个完全空的进度条和填充进度条.
我有这些图像,我把空白的一个填满了,他们是常规的SKSPriteNodes现在我不知道如何切割我需要的填充图像?
我想我将需要图像 – 一个完全空的进度条和填充进度条.
我有这些图像,我把空白的一个填满了,他们是常规的SKSPriteNodes现在我不知道如何切割我需要的填充图像?
如何在某一点剪切SKSpriteNode图像?也许纹理?
解决方法
我会推荐看看
SKCropNode.对于SKCropNode的可视化帮助,请查看
Apple Programming Guide.我已经阅读了整个文档多次,这是一个非常好的阅读.
SKCropNode基本上是一个SKNode,您可以添加到您的场景中,但可以通过掩码裁剪其子节点.该掩码设置在SKCropNode的maskNode属性中.这样,您只需要一个纹理图像.我会将SKCropNode子类化以实现移动或调整掩码大小的功能,以便您可以轻松更新其外观.
@interface CustomProgressBar : SKCropNode /// Set to a value between 0.0 and 1.0. - (void) setProgress:(CGFloat) progress; @end @implementation CustomProgressBar - (id)init { if (self = [super init]) { self.maskNode = [SKSpriteNode spriteNodeWithColor:[SKColor whiteColor] size:CGSizeMake(300,20)]; SKSpriteNode *sprite = [SKSpriteNode spriteNodeWithImageNamed:@"progressBarImage"]; [self addChild:sprite]; } return self; } - (void) setProgress:(CGFloat) progress { self.maskNode.xScale = progress; } @end
在你的场景中
#import "CustomProgressBar.h" // ... CustomProgressBar * progressBar = [CustomProgressBar new]; [self addChild:progressBar]; // ... [progressBar setProgress:0.3]; // ... [progressBar setProgress:0.7];
注意:这个代码不会移动掩码(所以sprite将被裁剪在任何一方),但我确定你得到的想法.