我将SKSpriteNode
子类化为SKButton
SKButton.h
@interface SKButton : SKSpriteNode
现在我想通过SKButton.m
self = [SKSpriteNode spriteNodeWithImageNamed:image];
这里的自我是SKButton
,但它给了我错误
无法在init系列的方法之外分配给“self” 不兼容的指针类型从'SKSpriteNode *'
分配给'SKButton *'
我也在SKButton.m
self = [self spriteNodeWithImageNamed:image];
它给了我错误
'SKButton'没有可见的@interface声明选择器 'spriteNodeWithImagedNamed:'
答案 0 :(得分:2)
spriteNodeWithImageNamed:
是SKSpriteNode
上的一个类方法,它使用提供的图像返回一个新的SKSpriteNode。基本上,你想用这条线做什么 -
self = [SKSpriteNode spriteNodeWithImageNamed:image];
将当前对象更改为新对象 - 您无法执行此操作。即使可以,也会是新的SKSpriteNode
,而不是新的SKButton
。
您需要做的是操纵节点的texture
属性 -
self.texture=[SKTexture textureWithImageNamed:image];
答案 1 :(得分:1)
在这一行:
apply plugin: 'com.android.library'
android {
compileSdkVersion 22
buildToolsVersion '22.0.1'
defaultConfig {
minSdkVersion 10
targetSdkVersion 22
ndk {
moduleName "PluginProtocolStatic"
}
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
}
}
productFlavors {
}
}
dependencies {
}
您正在向self = [SKSpriteNode spriteNodeWithImageNamed:image];
转发SKSpriteNode
这是不正确的,因为SKButton
实例没有SKButton提供的额外实现。
由于SKSpriteNode
是SKButton
子类,因此它包含所有功能,因此您可以这样做:
SKSpriteNode