将 SKSprite 的图像更改为 SKShapeNode
Changing the image of a SKSprite to an SKShapeNode
雪碧套件,Xcode。
我需要找到一种在程序本身内更改精灵图像的方法。我知道如何创建jpg文件并将它们制作成精灵图像...
但是对于这个程序,我需要使用SKShapeNode绘制circles/polygons(在程序内部可能会改变),然后将其传输到SKSpriteNode的图像中。
假设我已经声明:
SKSpriteNode *sprite;
SKShapeNode *image;
我该如何使用这些变量?
谢谢!
编辑:当我说图像时,我指的是纹理。
SKSpriteNode 图像一旦分配就无法更改。为了做你想做的事,你需要使用纹理创建一个 SKSpriteNode。
- (instancetype)initWithTexture:(SKTexture *)texture
要更改 SKSpriteNode 的纹理,您可以使用其纹理分配新纹理 属性。您也可以使用转换为纹理的图像来执行此操作:
myNode.texture = [SKTexture textureWithImageNamed:@"imageName"];
至于SKShapeNode,您不能分配图像。只有路径、矩形、圆、椭圆或点。查看 SKShapeNode class 文档部分 Creating a Shape Path 了解更多信息。
如果我对你的问题理解正确,你可以在 SKView
上使用 textureFromNode
方法后实现你的目标。
在你的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];
}
希望对您有所帮助!
雪碧套件,Xcode。
我需要找到一种在程序本身内更改精灵图像的方法。我知道如何创建jpg文件并将它们制作成精灵图像...
但是对于这个程序,我需要使用SKShapeNode绘制circles/polygons(在程序内部可能会改变),然后将其传输到SKSpriteNode的图像中。
假设我已经声明:
SKSpriteNode *sprite;
SKShapeNode *image;
我该如何使用这些变量?
谢谢!
编辑:当我说图像时,我指的是纹理。
SKSpriteNode 图像一旦分配就无法更改。为了做你想做的事,你需要使用纹理创建一个 SKSpriteNode。
- (instancetype)initWithTexture:(SKTexture *)texture
要更改 SKSpriteNode 的纹理,您可以使用其纹理分配新纹理 属性。您也可以使用转换为纹理的图像来执行此操作:
myNode.texture = [SKTexture textureWithImageNamed:@"imageName"];
至于SKShapeNode,您不能分配图像。只有路径、矩形、圆、椭圆或点。查看 SKShapeNode class 文档部分 Creating a Shape Path 了解更多信息。
如果我对你的问题理解正确,你可以在 SKView
上使用 textureFromNode
方法后实现你的目标。
在你的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];
}
希望对您有所帮助!