对于iphone,cocos2d中的ccTouchBegan中的CCSprite上不会运行操作

时间:2010-03-01 03:46:37

标签: iphone cocos2d-iphone touch

我试图在检测到触摸时立即按下按钮。这是我的场景:


@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顺便说一句。

2 个答案:

答案 0 :(得分:1)

这个问题的答案(转自提问者自己的评论,以使其更加明显):

  

致电

非常重要
[super onEnter];
  

如果在子类中覆盖此方法或者可能会发生奇怪的事情。 Cocos2D不会高兴。

     

这也适用于其他(如果不是全部)方法,例如: G。总是打电话

[super onExit];
  

答案 1 :(得分:0)

不完全确定可能发生的事情。看起来你所拥有的应该可以正常工作,但你可能想尝试对sp_btn_story应用不同的动作,如淡入或淡出,看看是否至少任何动作都可以。如果不这样做,您也可以尝试在代码的不同部分应用该操作。这些不是解决方案,但它们可以提供证据来说明究竟发生了什么。