我今天一直在看一些 Sprite 套件教程,但我似乎找不到任何类似的教程,所以我来到 stackoverflow 以了解 Sprite 套件的基础知识。
我知道创建文本的代码是:
SKLabelNode *label = [SKLabelNode labelNodeWithFontName:@"Chalkduster"];
label.text = @"This is a string which is displayed in an SKView";
label.fontSize = 30;
label.position = CGPointMake(100, 100);
[self addChild:label];
我知道这会在 SKView 中添加一个字符串,但我想知道的是我如何在除以下之外的地方创建它:
-(id)initWithSize:(CGSize)size {
if (self = [super initWithSize:size]) {
//above code here
}
return self;
}
我试过一个简单的方法,比如:
-(void)exampleText{
//SKLabelNode code here
}
但它们似乎不起作用,也许它可以做一些返回值(如果有人可以将我链接到可以帮助我更好地理解返回值的教程,那就太好了)
SKSpriteNode 也是如此:
SKSpriteNode *sprite = [SKSpriteNode spriteNodeWithImageNamed:@"sprite.png"
sprite.name = "Sprite";
sprite.scale = 0.5;
[self addChild:sprite];
这也是在 initWithSize:
方法中输入的
有没有可能用其他方法创建它们? 以及 SKAction 类型(如果那是你对它们的称呼)(当然有)
我也很好奇如何使用 if 语句来影响节点,例如这段代码:
if (sprite.alpha == 0 || sprite.alpha < 0){
[sprite removeFromParent];
}
最佳答案
我找到了答案!
要在单独的方法中创建 SKLabelNode
和 SKSpriteNode
,您需要创建如下方法:
-(SKNode*)makeSprite{
SKSpriteNode *sprite = [SKSpriteNode spriteNodeWithImageNamed:@"sprite.png";
sprite.name = @"sprite";
sprite.scale = 0.5;
sprite.position = CGPointMake(CGRectGetMidX(self.frame), CGRectGetMidY(self.frame));
}
然后创建另一个方法,如下所示:
-(void)createSprite{
SKNode *sprite[self makeSprite];
[self addChild:sprite];
}
然后将 createSprite
方法添加到:
-(id)initWithSize:(CGSize)size {
if (self = [super initWithSize:size]) {
[self createSprite];
}
return self;
}
关于ios - 如何创建单独的方法来创建 SKLabelNode 或 SKSpriteNode,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21361236/