在我的主菜单中,我有一个声音徽标,我放在屏幕的底部。我有它作为spriteNoedeWithImageNamed但我需要它,所以当我点击它时它会改变纹理,我不知道如何不使用纹理这样做。我的问题是,我把它作为纹理,现在它根本没有加载。我知道这是一个简单的问题,但我整天都在谈论这个问题,我无法想到解决方案。
{
BOOL myBool;
//SKSpriteNode *soundLogo;
SKTexture *soundOn;
SKTexture *soundOff;
}
-(void) addSoundLogo:(CGSize)size {
SKSpriteNode *soundLogo = [SKSpriteNode spriteNodeWithTexture:soundOn];
//resize sprite
soundLogo.size = CGSizeMake(soundLogo.size.width/2.25, soundLogo.size.height/2.25);
//position sprite
CGPoint myPoint = CGPointMake(65, 25);
soundLogo.position = myPoint;
//name sound logo
soundLogo.name = @"soundLogo";
//add action
[self addChild:soundLogo];
}
答案 0 :(得分:0)
将此方法添加到场景中。如果是视图控制器,则将locationInNode:替换为locationInView:
如果您需要将其添加到其他方法而不是touchesBegan:您现在知道如何使用纹理来完成它。确保在启动指针之前对返回值进行强制转换,然后使警告静音。
-(void) touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
//_bgLayer is the node that you put your SKSpriteNodes on.
SKSpriteNode * node = (SKSpriteNode*)[_bgLayer nodeAtPoint:[[touches anyObject] locationInNode:_bgLayer]];
//wallTile is the name of the texture you want it to be changed to.
node.texture = [SKTexture textureWithImageNamed:@"wallTile"];
}
希望这有帮助。