Как мне активировать - (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];
}
1 ответ
Боюсь, для этого нет 1-2 лайнеров, если вы отметите CCButton.m
, вы увидите, когда срабатывают действия
- (void) touchUpInside:(UITouch *)touch withEvent:(UIEvent *)event
{
[super setHitAreaExpansion:_originalHitAreaExpansion];
if (self.enabled)
{
[self triggerAction];
}
self.highlighted = NO;
}
Действительно грязный quickfix
Если вы хотите, чтобы ВСЕ кнопки в вашей игре имели такое поведение, просто переместите [self triggerAction]
на - (void) touchEntered:(UITouch *)touch withEvent:(UIEvent *)event
в CCButton
.
Элегантное решение
Создайте собственный подкласс CCButton
, в котором вы переопределяете методы touchUpInside
и touchEntered
. Но поскольку они не являются общедоступными, вам придется создать заголовок CCButton_Protected.h
, в который вы импортируете свой обычный заголовок CCButton
, и поместить туда сигнатуры частных методов, которые вы хотите переопределить.
Похожие вопросы
Новые вопросы
button
Кнопки - это простые элементы в графическом пользовательском интерфейсе, которые воспринимают щелчки мышью или касания пальцами (на сенсорных устройствах).