Я создал класс для использования SKSpriteNode в качестве кнопки довольно давно. Здесь вы можете найти его на GitHub.
AGSpriteButton
реализация Это основано на UIButton, так что если вы уже знакомы с прошивкой, вы должны найти его легко работать.
Он включает в себя метод настройки ярлыка.
Кнопка обычно объявляется следующим образом:
AGSpriteButton *button = [AGSpriteButton buttonWithColor:[UIColor redColor] andSize:CGSizeMake(300, 100)];
[button setLabelWithText:@"Button Text" andFont:nil withColor:nil];
button.position = CGPointMake(self.size.width/2, self.size.height/3);
[button addTarget:self selector:@selector(someSelector) withObject:nil forControlEvent:AGButtonControlEventTouchUpInside];
[self addChild:button];
И это все. Тебе хорошо идти.
EDIT: После публикации этого ответа в AGSpriteButton было сделано несколько улучшений.
Теперь вы можете назначить блоки, которые будут выполняться на сенсорных событий:
[button performBlock:^{
[self addSpaceshipAtPoint:[NSValue valueWithCGPoint:CGPointMake(100, 100)]];
} onEvent:AGButtonControlEventTouchUp];
Кроме того, объект SKAction быть выполнены на примере SKNode (или любого из его подклассов) могут быть назначены:
[button addTarget:self
selector:@selector(addSpaceshipAtPoint:)
withObject:[NSValue valueWithCGPoint:CGPointMake(self.size.width/2, self.size.height/2)]
forControlEvent:AGButtonControlEventTouchUpInside];
AGSpriteButton также может использоваться с Swift!
let button = AGSpriteButton(color: UIColor.greenColor(), andSize: CGSize(width: 200, height: 60))
button.position = CGPoint(x: self.size.width/2, y: self.size.height/2)
button.addTarget(self, selector: "addSpaceship", withObject: nil, forControlEvent:AGButtonControlEvent.TouchUpInside)
button.setLabelWithText("Spaceship", andFont: nil, withColor: UIColor.blackColor())
addChild(button)
Вам нужно будет использовать touchhesBegan/Ended, как еще вы получите сенсорный ввод? Один из способов сделать это: https://github.com/KoboldKit/KoboldKit/blob/master/KoboldKit/KoboldKitFree/Framework/Behaviors/UserInterface/KKButtonBehavior.m – LearnCocos2D
мой пример кнопки переключения http://stackoverflow.com/questions/ 19688451/how-to-make-a-toggle-button-on-spritekit/19694729 # 19694729 – DogCoffee
Что плохо для вас при добавлении UIButton в didMoveToView? Если он показывает бит, превышающий нагрузку на сцену, попробуйте установить параметр «pausesIncomingScene» или SKTransition, который вы используете для показа SKScene..I персона, используйте метод SKSpriteNode с помощью методов прикосновений ... – BSevo