调用SKSpriteNode中的自定义方法不起作用

时间:2015-11-08 21:30:39

标签: ios objective-c sprite-kit skspritenode

我有一个自定义的SKSpriteNode对象,想在其中调用一个自定义方法“Set Defaults”。

#import <SpriteKit/SpriteKit.h>

@interface Platform : SKSpriteNode

- (instancetype)initWithDynamicPlatform;
- (void)setDefaults;

@end

在.m文件中

#import "Platform.h"

@implementation Platform

- (instancetype)initWithImageNamed:(NSString *)name {
if (self == [super initWithImageNamed:name]) {
    NSLog(@"Initiated Platform");
}
return self;
}

- (instancetype)initWithDynamicPlatform {

if (self == [super initWithImageNamed:@"Platform2"]) {
    NSLog(@"Initiated Platform");
}

[self setDefaults];

return self;
}

- (void)setDefaults {

/**
 * Set the name
 */

self.name = @"Platform";

/**
 * Set the effect of gravity on the platform
 */

self.physicsBody.affectedByGravity = NO;
self.physicsBody.dynamic = NO;


 }

 @end

问题是从SKScene文件中我无法访问自定义方法。

- (void)loadDynamicPlatform {

SKSpriteNode *spritePlatform = [[Platform alloc] initWithDynamicPlatform];    

[spritePlatform setDefaults];

[self addChild:spritePlatform];
[self movePlatform:spritePlatform];

}

我收到错误消息

  

“/用户/ **** /桌面/应用程序/ **** / **** / GameScene.m:142:21:   'SKSpriteNode'没有可见的@interface声明选择器   'setDefaults'“

知道为什么我无法访问它。我确信我正确地设置了它。

1 个答案:

答案 0 :(得分:4)

您必须声明'Platform'变量或将'SKSpriteNode'强制转换为'Platform':

Platform *spritePlatform = [[Platform alloc] initWithDynamicPlatform];    

[spritePlatform setDefaults];