我将SKSpriteNode子类化为SKButton创建一个SKButton.h

@interface SKButton : SKSpriteNode

现在我想通过SKButton.m中的方法更改按钮图像
self = [SKSpriteNode spriteNodeWithImageNamed:image];

这里的自我是SKButton,但这给了我错误

无法在初始化族的方法之外分配给“自身”
从“SKSpriteNode *”分配给“SKButton *”的指针类型不兼容

我也在SKButton.m中尝试过
self = [self spriteNodeWithImageNamed:image];

它给我错误

'SKButton'没有可见的@interface声明选择器
'spriteNodeWithImagedNamed:'

最佳答案

spriteNodeWithImageNamed:SKSpriteNode上的类方法,该方法使用提供的图像返回新的SKSpriteNode。本质上,您正在尝试使用此行-

self = [SKSpriteNode spriteNodeWithImageNamed:image];

是将当前对象更改为新对象-您不能执行此操作。即使可以,也可能是新的SKSpriteNode而不是新的SKButton

您需要做的是操纵节点的texture属性-
self.texture=[SKTexture textureWithImageNamed:image];

关于ios - 如何调用父类(super class)表单子(monad)类SpriteKit的方法,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31693959/

10-10 20:47