将SKSprite的图像更改为SKShapeNode

时间:2015-05-13 19:38:40

标签: objective-c sprite-kit skspritenode skshapenode

Sprite Kit,Xcode。

我需要找到一种方法来改变程序本身内的精灵图像。我知道如何创建jpg文件并将它们变成精灵图像......

但是对于这个程序,我需要使用SKShapeNode绘制圆/多边形(可能在程序内部更改),然后将其传输到SKSpriteNode的图像。

我们说我已宣布:

SKSpriteNode *sprite;
SKShapeNode *image;

我如何使用这些变量?

谢谢!

编辑:当我说图像时,我的意思是纹理。

2 个答案:

答案 0 :(得分:2)

如果我正确理解您的问题,您可以在textureFromNode上使用SKView方法后实现自己的目标。

SKScene

-(void)didMoveToView:(SKView *)view {
    SKShapeNode *shape = [SKShapeNode shapeNodeWithCircleOfRadius:100];
    shape.fillColor = [UIColor blueColor];
    shape.position  = CGPointMake(self.size.width * 0.25, self.size.height * 0.5);
    [self addChild:shape];

    SKTexture *shapeTexture = [view textureFromNode:shape];
    SKSpriteNode* sprite = [SKSpriteNode spriteNodeWithTexture: shapeTexture];
    sprite.position = CGPointMake(self.size.width * 0.75, self.size.height * 0.5);
    [self addChild:sprite];
}

希望有所帮助!

答案 1 :(得分:0)

分配后,您无法更改SKSpriteNode图像。要做你想做的事,你需要使用纹理创建一个SKSpriteNode。

- (instancetype)initWithTexture:(SKTexture *)texture

要更改SKSpriteNode的纹理,请使用其纹理属性指定新纹理。您也可以使用转换为如下纹理的图像来执行此操作:

myNode.texture = [SKTexture textureWithImageNamed:@"imageName"];

对于SKShapeNode,您无法分配图像。只有路径,矩形,圆形,椭圆形或点。有关详细信息,请参阅SKShapeNode类文档部分Creating a Shape Path