如何在touchesBegan中更改SKSpriteNode的颜色?

时间:2015-05-04 10:46:19

标签: ios sprite-kit skspritenode touchesbegan

我是SpriteKit的新手,我正在尝试更改SKSpriteNodetouchesBegan的颜色。我的尝试失败了;任何人都可以提出原因吗?

这是我的代码:

-(id)initWithSize:(CGSize)size {    
    if (self = [super initWithSize:size]) {
    /* Setup your scene here */

    self.backgroundColor = [SKColor colorWithRed:0.15 green:0.15 blue:0.3 alpha:1.0];

   mySKSpriteNode=[SKSpriteNode spriteNodeWithTexture:[SKTexture textureWithImage:[UIImage imageNamed:@"bg-1.png"]] size:CGSizeMake(50, 50)];
    [mySKSpriteNode setPosition:CGPointMake(150, 300)];
    mySKSpriteNode.name = @"thisIsMySprite"; // set the name for your sprite
    mySKSpriteNode.userInteractionEnabled = NO;

    [self addChild:mySKSpriteNode];
   }
   return self;
 }
 -(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
 {

   UITouch *touch = [touches anyObject];
   CGPoint location = [touch locationInNode:self];
   SKNode *node = [self nodeAtPoint:location];
   if ([node.name isEqualToString:@"thisIsMySprite"])
   {
      NSLog(@"mySKSpriteNode was touched!");
      [mySKSpriteNode setColor:[UIColor whiteColor]];
   }

 }

执行if语句,因为"我的mySKSpriteNode被触及!"触摸节点后成功打印。但是,我无法更改节点的颜色。有人可以建议一种方法吗?

1 个答案:

答案 0 :(得分:0)

我犯了一个错误,它没有改变颜色,因为我使用纹理而不是颜色初始化了精灵。

我用以下代码修复了它:

 mySKSpriteNode=[SKSpriteNode spriteNodeWithColor:[UIColor redColor]  size:CGSizeMake(50, 50)];