-
Notifications
You must be signed in to change notification settings - Fork 1
/
CCToggleButton.m
86 lines (69 loc) · 1.89 KB
/
CCToggleButton.m
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
//
// CCToggleButton.m
// CCButton
//
// Created by Shotaro Emori on 12/02/18.
// Copyright Shotaro Emori 2012. All rights reserved.
//
#import "CCToggleButton.h"
@implementation CCToggleButton
@synthesize offSelector = offSelector_, toggle = toggle_;
#pragma mark - cycle
- (id)initWithNode:(CCNode *)node contentSize:(CGSize)size target:(id)target selector:(SEL)selector offSelector:(SEL)offSelector
{
self = [self init];
if (self) {
self.node = node;
contentSize_ = size;
self.toggle = NO;
self.target = target;
selector_ = selector;
offSelector_ = offSelector;
enable_ = YES;
[self addChild:self.node];
}
return (self);
}
#pragma mark - access method
- (BOOL)toggle
{
return toggle_;
}
- (void)setToggle:(BOOL)toggle
{
if (toggle == YES) {
[self.node getChildByTag:CCTOGGLEBUTTON_OFF_SPRITE_TAG].visible = NO;
[self.node getChildByTag:CCTOGGLEBUTTON_ON_SPRITE_TAG].visible = YES;
} else {
[self.node getChildByTag:CCTOGGLEBUTTON_OFF_SPRITE_TAG].visible = YES;
[self.node getChildByTag:CCTOGGLEBUTTON_ON_SPRITE_TAG].visible = NO;
}
toggle_ = toggle;
}
#pragma mark - CCTargetedTouchDelegate
- (BOOL)ccTouchBegan:(UITouch *)touch withEvent:(UIEvent *)event
{
if (!self.visible || !self.enable) {
return NO;
}
bool isTouch = [self containsTouchLocation:touch];
if (isTouch) {
self.toggle = !self.toggle;
if (self.toggle) {
[target_ performSelector:selector_ withObject:self];
} else {
[target_ performSelector:offSelector_ withObject:self];
}
}
return isTouch;
}
- (void)ccTouchMoved:(UITouch *)touch withEvent:(UIEvent *)event
{
}
- (void)ccTouchEnded:(UITouch *)touch withEvent:(UIEvent *)event
{
}
- (void)ccTouchCancelled:(UITouch *)touch withEvent:(UIEvent *)event
{
}
@end