如何调用超类表单子类SpriteKit的方法

时间:2015-07-29 07:30:51

标签: ios objective-c sprite-kit textures skspritenode

我将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:'

2 个答案:

答案 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提供的额外实现。

由于SKSpriteNodeSKButton子类,因此它包含所有功能,因此您可以这样做:

SKSpriteNode