簡體   English   中英

如何調用超類表單子類SpriteKit的方法

[英]How to call a method of super class form subclass SpriteKit

我將SKSpriteNode子類SKButtonSKButton.h創建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:'

spriteNodeWithImageNamed:是一類方法SKSpriteNode ,使用所提供的圖像返回一個新SKSpriteNode。 基本上,你要用這條線做什么 -

self = [SKSpriteNode spriteNodeWithImageNamed:image];

將當前對象更改為新對象 - 您無法做到。 即使你可以,它也將是一個新的SKSpriteNode ,而不是一個新的SKButton

你需要做的是操縱節點的texture屬性 -

self.texture=[SKTexture textureWithImageNamed:image];

在這一行:

self = [SKSpriteNode spriteNodeWithImageNamed:image];

你是一個向下轉換SKSpriteNodeSKButton為這是不正確SKSpriteNode實例沒有通過SKButton提供的額外實施。

由於SKButton是一個SKSpriteNode子類,它包含了它的所有功能,所以你可以這樣做:

- (void)buttonClicked {
   [self setTexture:[SKTexture textureWithImageNamed:"buttonClicked.png"]];
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM