将 SKSprite 的图像更改为 SKShapeNode

Posted

技术标签:

【中文标题】将 SKSprite 的图像更改为 SKShapeNode【英文标题】:Changing the image of a SKSprite to an SKShapeNode 【发布时间】:2015-05-13 19:38:39 【问题描述】:

Sprite 套件,Xcode。

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

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

假设我已经声明:

SKSpriteNode *sprite;
SKShapeNode *image;

我将如何处理这些变量?

谢谢!

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

【问题讨论】:

【参考方案1】:

如果我正确理解您的问题,您可以在 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];

希望有帮助!

【讨论】:

现在的问题是,我似乎在使用与你不同的语言......我从未见过“让”这个词?使用 SKSpriteKit、Xcode... 这么快吗?我对Xcode很陌生,顺便说一句,如果我错了请告诉我^^ 我已经更新了我的答案 :) 我已经有一段时间没有写任何 Objective-C 了! 还有其他方法吗?在我的新程序中,我需要直接更改现有精灵中的纹理,例如从三角形到圆形。谢谢【参考方案2】:

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

- (instancetype)initWithTexture:(SKTexture *)texture

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

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

对于 SKShapeNode,您不能分配图像。只有路径、矩形、圆、椭圆或点。查看 SKShapeNode 类文档部分 Creating a Shape Path 了解更多信息。

【讨论】:

不...我的意思是我想将 SKShapeNode 分配给 SKSpriteNode 的图像。所以 sprite.texture = SKShapeNode。当我在问题中说图像时,我的意思是纹理,sry @MasterShuriken - 据我所知不可能。

以上是关于将 SKSprite 的图像更改为 SKShapeNode的主要内容,如果未能解决你的问题,请参考以下文章

将图像更改为菜单内的圆圈

如何将大屏幕图像下的 figcaption 位置更改为移动图像右侧?

将imageview的图像更改为5秒,然后恢复原始图像

UIImageView:将大小更改为图像大小?

应用更新时如何将启动屏幕文件更改为启动图像源?

将导航栏更改为图像