我正在使用Xcode的Sprite工具包为AppStore开发游戏。我有一些单一颜色的形状,我想“拼接”在一起,并让用户能够拖放这个拼接的图像,就像他们使用单一颜色的形状。
更详细:我有以下两张图片: http://s1381.photobucket.com/user/shahmeen/media/CircleYellow_zps11feede7.png.html http://s1381.photobucket.com/user/shahmeen/media/CircleRed_zps49eb1802.png.html
SKSpriteNode *spriteA;
spriteA = [SKSpriteNode spriteNodeWithImageNamed:@"CircleYellow"];
[self addChild:spriteA];
SKSpriteNode *spriteB;
spriteB = [SKSpriteNode spriteNodeWithImageNamed:@"CircleRed"];
[self addChild:spriteB];
我想有第三个精灵,看起来就像下面一样(请原谅我粗糙的Photoshop技能......如果链接不起作用,我想创建的是一个图像,spriteC,带有左半部分是spriteA的左半部分,右半部分是spriteB的右半部分: http://s1381.photobucket.com/user/shahmeen/media/CircleRed_zps9ca710cb.png.html
(some code that crops spriteA and spriteB and then)
SKSpriteNode *spriteC;
spriteC = (the output of spriteA and spriteB cropped and spliced together);
[self addChild:spriteC];
我知道我可以使用上面描述的对象的简单性使用SKShapeNodes做这样的事情,但我打算用更复杂的数字来做这件事。另外我认为加载几个.pngs对我来说是不切实际的,因为我将使用所有排列进入数百个计数。我很乐意澄清任何事情 - 谢谢
答案 0 :(得分:1)
我将通过代码创建两个图像的最终组合,并使SKSpriteNode
将此组合图像用作纹理。你可以这样做,假设两个图像&最后一个具有相同的大小:
- (UIImage*)combineImage:(UIImage*)leftImage withImage:(UIImage*)rightImage{
CGSize finalImageSize = leftImage.size;
CGFloat scale = leftImage.scale;
UIGraphicsBeginImageContextWithOptions(finalImageSize, NO, scale);
CGContextRef context = UIGraphicsGetCurrentContext();
[leftImage drawAtPoint:CGPointZero];
CGContextClipToRect(context, CGRectMake(finalImageSize.width/2, 0, finalImageSize.width/2, finalImageSize.height)); //use clipToMask with a maskImage if you have some more complicated images
[rightImage drawAtPoint:CGPointZero];
UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return image;
}