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

Posted

技术标签:

【中文标题】如何在 touchesBegan 中更改 SKSpriteNode 的颜色?【英文标题】:How to change the color of an SKSpriteNode in touchesBegan? 【发布时间】:2015-05-04 10:46:18 【问题描述】:

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

这是我的代码:

-(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 被触动了!”触摸节点时成功打印。但是,我无法更改节点的颜色。有人可以建议一种方法吗?

【问题讨论】:

变色的语法可能有问题。 你可以使用这个:***.com/a/22430901/437146 你的意思是说我必须使用 SKColor 而不是 UIColor? 【参考方案1】:

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

我用以下代码修复了它:

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

【讨论】:

请将您自己的答案标记为正确。这将使人们能够看到解决问题的方法,并节省其他用户寻找未解决问题的时间。

以上是关于如何在 touchesBegan 中更改 SKSpriteNode 的颜色?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Sprite 套件中为 touchesBegan 制作一个按钮

如何在 touchesBegan 上的自定义 UIView 中调整 UILabel 位置?

当我在 touchesBegan 内部制作动画时,触摸会丢失

Sprite Kit 如何更新按钮上的图像?

如何加速 touchesBegan 事件触发?

你如何知道在 touchesBegan 中被触摸的对象是啥?