错误:选择器没有已知类方法' addChild'

时间:2015-01-03 03:31:24

标签: ios objective-c cocoa-touch

所以,我创建了一个名为'Level1Class'的新类,并创建了一个名为'level1Layout'的方法。在那个方法中,我创建了一个名为'level1ButtonRed'的SKSprite,当我设置位置并尝试使用

添加它时
[self addChild: level1ButtonRed]

它给了我错误

  

"No Known Class method for selector 'addChild'."

#import "Level1Class.h"
#import "GameScene.h"

@implementation Level1Class

+(void) level1Layout{

    SKSpriteNode *level1ButtonRed;
    level1ButtonRed = [SKSpriteNode spriteNodeWithImageNamed:@"LevelButton_Red"];
    level1ButtonRed.position = CGPointMake(CGRectGetMidX(self.frame), CGRectGetMidY(self.frame));
    [self addChild: level1ButtonRed];
}

@end

#import "GameScene.h"

static NSString *levelButtonRed = @"levelButtonRed";

@implementation GameScene

SKSpriteNode *trans;

-(void)didMoveToView:(SKView *)view {
    /* Setup your scene here */

    trans = [SKSpriteNode spriteNodeWithImageNamed:@"Transparent"];
     }

-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
    /* Called when a touch begins */

    for (UITouch *touch in touches) {
        CGPoint location = [touch locationInNode:self];
        trans.position = location;

        [self enumerateChildNodesWithName:@"levelButtonRed" usingBlock: ^(SKNode *node1, BOOL *stop1){
            if( [trans intersectsNode:node1]){
                [Level1Class level1Layout];
            }
        }];

    } }

-(void)update:(CFTimeInterval)currentTime {
    /* Called before each frame is rendered */ }

@end

Level1Class.h

#import <SpriteKit/SpriteKit.h>
#import <Foundation/Foundation.h>

@interface Level1Class : NSObject

-(void) level1Layout;

@end

任何帮助??

1 个答案:

答案 0 :(得分:0)

您将该邮件发送至self内的+level1Layout。这是一种类方法。因此self指向类对象。您不能将子项添加到类对象。您可以将子项添加到该类的实例对象。

要解决该问题,请先创建一个实例,然后将该子项添加到该实例。