如何在SpriteKit上创建一个切换按钮 [英] How to make a Toggle Button on SpriteKit
本文介绍了如何在SpriteKit上创建一个切换按钮的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我正在SpriteKit中做一个声音切换按钮,我正试图找到一个快速的方法来做到这一点。我记得在Cocos2d中有一个名为 CCMenuItemToggle
的变量,它产生了所有的东西,例如:
I am doing a sound toggle button in SpriteKit, and I'm trying to find out a quick way to do it. I remember that in Cocos2d there was a variable called CCMenuItemToggle
that made all the stuff, for example:
CCMenuItemToggle* musicButtonToggle = [CCMenuItemToggle
itemWithItems:[NSArray arrayWithObjects:soundButtonOn,soundButtonOff, nil]
block:^(id sender)
{
[self stopSounds];
}];
任何人都知道在SpriteKit上做这个的方法吗?
Anyone know a way to do this on SpriteKit?
推荐答案
基本切换按钮对SKLabelNode进行子类化
.h
typedef NS_ENUM(NSInteger, ButtonState)
{
On,
Off
};
@interface ToggleButton : SKLabelNode
- (instancetype)initWithState:(ButtonState) setUpState;
- (void) buttonPressed;
@end
.m
#import "ToggleButton.h"
@implementation ToggleButton
{
ButtonState _currentState;
}
- (id)initWithState:(ButtonState) setUpState
{
if (self = [super init]) {
_currentState = setUpState;
self = [ToggleButton labelNodeWithFontNamed:@"Chalkduster"];
self.text = [self updateLabelForCurrentState];
self.fontSize = 30;
}
return self;
}
- (NSString *) updateLabelForCurrentState
{
NSString *label;
if (_currentState == On) {
label = @"ON";
}
else if (_currentState == Off) {
label = @"OFF";
}
return label;
}
- (void) buttonPressed
{
if (_currentState == Off) {
_currentState = On;
}
else {
_currentState = Off;
}
self.text = [self updateLabelForCurrentState];
}
@end
添加切换按钮到你的场景
ToggleButton *myLabel = [ToggleButton new];
myLabel = [myLabel initWithState:Off];
myLabel.position = CGPointMake(CGRectGetMidX(self.frame), CGRectGetMidY(self.frame));
[self addChild:myLabel];
检测触摸
-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
UITouch* touch = [touches anyObject];
CGPoint loc = [touch locationInNode:self];
SKNode *node = [self nodeAtPoint:loc];
if ([node isKindOfClass:[ToggleButton class]]) {
ToggleButton *btn = (ToggleButton*) node;
[btn buttonPressed];
}
}
这篇关于如何在SpriteKit上创建一个切换按钮的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文