我的Sprite有一个Class,我正在尝试从该类添加.Child。问题是它呈现它并且不会崩溃 - 我只是看不到图像。我知道图像位置是正确的,因为创建并添加了gameScene类中的子项并且它已经工作和加载。
我认为这不起作用,因为它不是SKscene的子类,这就是我从gameScene添加主节点但没有解决问题的原因。
我设置了一个“mainNode”节点
keys只是精灵的名称及其类名
我知道正在渲染的图像由于某种原因而无法显示。
我知道这是因为如果我没有添加图像名称而不是“key_green”并将其更改为空。我得到一个控制台消息说它无法找到该图像。
gameScene.m
#import "GameScene.h"
#import "Keys.h"
@implementation GameScene
@synthesize mainNode;
-(void)didMoveToView:(SKView *)view {
self.backgroundColor = [UIColor whiteColor];
mainNode = [SKNode node];
[self addChild:mainNode];
Keys * KeysOBJ =[[Keys alloc] init];
[KeysOBJ initKeys];
}
keys.h
#import <SpriteKit/SpriteKit.h>
#import "GameScene.h"
@interface Keys : SKSpriteNode{
SKSpriteNode * key1;
}
@property SKNode* mainNode;
-(void)initKeys;
-(void)loadKeys;
keys.m
#import "Keys.h"
#import "GameScene.h"
@implementation Keys{
}
@synthesize mainNode;
-(void)initKeys{
key1 = [SKSpriteNode spriteNodeWithImageNamed:@"key_red"];
key1.position = CGPointMake((self.frame.size.width)- (self.frame.size.width)+350, (self.frame.size.height)-(self.frame.size.height)+50);
[mainNode addChild:key1];
}
答案 0 :(得分:0)
您的主要节点在您的密钥中为零,因为您在调用initKeys之前从未设置过它。理论上这将使它发挥作用。
Keys * KeysOBJ =[[Keys alloc] init];
KeysOBJ.mainNode = mainNode;
[KeysOBJ initKeys];
还要考虑这个
key1.position = CGPointMake((self.frame.size.width)- (self.frame.size.width)+350, (self.frame.size.height)-(self.frame.size.height)+50);
self
没有大小,因为你刚刚调用了init并且从未提供纹理或大小。这意味着你的精灵位置可能是350,50。
有了这样说,你已经过度复杂了。如果你永远不会为它设置纹理,你的键不应该是SKSpriteNode的子类。它应该是一个SKNode。
希望这有点意义,让你指向正确的方向。