spriteNodeWithTexture没有加载

时间:2014-11-21 01:01:54

标签: ios sprite-kit textures

在我的主菜单中,我有一个声音徽标,我放在屏幕的底部。我有它作为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];


} 

1 个答案:

答案 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"];
}

希望这有帮助。