如何在SpriteKit中添加突出显示的按钮?

时间:2015-04-24 15:56:35

标签: ios objective-c sprite-kit skspritenode

我知道如何在SpriteKit中添加按钮。

我已完成SKSpriteNode。 但是,我不知道如何添加像UIButton这样的高亮显示按钮。

我的意思是当我按下SKSpriteNode(Button)时,我希望显示来自UIKit的UIButton高亮显示的图像。

我该怎么做?

以下是Button SKSpriteNode的代码。

self.playButton = [SKSpriteNode spriteNodeWithImageNamed:@"playButton.png"];
self.playButton.position = CGPointMake(self.frame.origin.x + 400, 100);
self.playButton.name = @"playButton";
self.playButton.zPosition = 2;
[self addChild:self.playButton];

3 个答案:

答案 0 :(得分:3)

我试过并得到了你正在寻找的东西,

  BOOL isMySpriteNodeTouched = NO;
 mySprite = [[SKSpriteNode alloc]initWithImageNamed:@"ball"];
 mySprite.position = CGPointMake(self.size.width/2.0f, self.size.height/2.0f);
 mySprite.name = @"mySprite";
[self addChild:mySprite];


 -(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event

{
    for (UITouch *touch in touches)
      {
           CGPoint touchPoint = [touch locationInNode:self];
           SKNode *localNode = [[SKNode alloc]init];
           localNode = [self nodeAtPoint:touchPoint];

           if ([localNode.name isEqualToString:mySprite.name])
          {
               mySprite.texture = [SKTexture textureWithImage:[UIImage imageNamed:@"highlightedBall"]];
             isMySpriteNodeTouched = YES;
          }
 }



-(void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event
   {
     if(isMySpriteNodeTouched)
       {
         isMySpriteNodeTouched = !isMySpriteNodeTouched;
         mysprite.texture = [SKTexture textureWithImage:[UIImage imageNamed:@"ball"]];
        } 
   }

答案 1 :(得分:2)

一种解决方案是创建两个SKSpriteNodes,一个用于活动状态,另一个用于默认状态,并将它们添加到视图中。

在touchesMoved和touchesEnded方法中,相应地隐藏和取消隐藏活动按钮和默认按钮。

Here's Swift中的教程。

答案 2 :(得分:1)

您可以使用方法-(void)didMoveToView:(SKView *)view中的view属性在SK中创建UIButton。

可以访问所有UIButton功能,包括突出显示。