我试图在检测到触摸时立即按下按钮。这是我的场景:
@implementation HomeScene
-(id) init
{
if((self = [super init])) {
...
// sp_btn_story is retained...
sp_btn_story = [[CCSprite spriteWithFile:@"main_menu_btn.png"] retain];
sp_btn_story.position = ccp(size.width - 146, 110);
[self addChild: sp_btn_story];
...
}
return self;
}
-(void) onEnter
{
[[CCTouchDispatcher sharedDispatcher] addTargetedDelegate:self priority:0 swallowsTouches:YES];
}
-(void) onExit
{
[[CCTouchDispatcher sharedDispatcher] removeDelegate:self];
}
- (BOOL)ccTouchBegan:(UITouch *)touch withEvent:(UIEvent *)event
{
NSLog(@"tapped!");
sp_btn_story.scaleX = 2;
[sp_btn_story stopAllActions];
[sp_btn_story runAction: [CCScaleTo actionWithDuration:0.5f scale:1.2f]];
return YES;
}
...
@end
正如预期的那样,它可以很好地缩放X. (我把它扔在那里进行测试。)但是由于某种原因,这个动作没有运行。 :(任何人都有任何想法?
编辑:使用cocos2d 0.99顺便说一句。
答案 0 :(得分:1)
这个问题的答案(转自提问者自己的评论,以使其更加明显):
致电
非常重要
[super onEnter];
如果在子类中覆盖此方法或者可能会发生奇怪的事情。 Cocos2D不会高兴。
这也适用于其他(如果不是全部)方法,例如: G。总是打电话
[super onExit];
。
答案 1 :(得分:0)
不完全确定可能发生的事情。看起来你所拥有的应该可以正常工作,但你可能想尝试对sp_btn_story
应用不同的动作,如淡入或淡出,看看是否至少任何动作都可以。如果不这样做,您也可以尝试在代码的不同部分应用该操作。这些不是解决方案,但它们可以提供证据来说明究竟发生了什么。