当按下 按钮时,如何触发- (void)onRightButtonClicked:(id)sender
,而不是 按下(放开)时。
这是按钮的代码
rightButton = [CCButton buttonWithTitle:@"" spriteFrame:[CCSpriteFrame frameWithImageNamed:@"right.png"]];
rightButton.position = ccp(self.contentSize.width/3.65, self.contentSize.height/10);
[rightButton setTarget:self selector:@selector(onRightButtonClicked:)];
[self addChild:rightButton];
然后按下按钮后会发生什么。
- (void)onRightButtonClicked:(id)sender
{
CCActionAnimate *animationAction = [CCActionAnimate actionWithAnimation:walkAnim];
CCActionRepeatForever *repeatingAnimation = [CCActionRepeatForever actionWithAction:animationAction];
[dino runAction:repeatingAnimation];
}
答案 0 :(得分:5)
我担心那个没有1-2个班轮,如果你检查CCButton.m
你可以看到什么时候触发了行动
- (void) touchUpInside:(UITouch *)touch withEvent:(UIEvent *)event
{
[super setHitAreaExpansion:_originalHitAreaExpansion];
if (self.enabled)
{
[self triggerAction];
}
self.highlighted = NO;
}
如果您希望游戏中的所有按钮都有此行为,请将[self triggerAction]
移至- (void) touchEntered:(UITouch *)touch withEvent:(UIEvent *)event
中的CCButton
。
创建CCButton
的自定义子类,您可以覆盖touchUpInside
和touchEntered
方法。但由于这些不公开,您必须创建一个CCButton_Protected.h
标头,您可以在其中导入普通的CCButton
标头,并将要覆盖的私有方法签名放在那里。