2010-03-01 23 views
3

我試圖基本上在檢測到觸摸時放大按鈕。這是我的場景:行動將不會運行在cocos2d中的ccTouchBegan中的CCSprite對於iphone

 

@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 BTW

回答

1

這個問題的答案(從提問者自己的意見轉貼,以使其更可見):

調用

[super onEnter]; 

這是很重要的,如果你覆蓋此方法在子類中或奇怪的事情可能發生。 Cocos2D不會很高興。

這也適用於其他(如果不是全部)方法,例如, G。隨時撥打

[super onExit]; 

爲好。

0

不完全知道什麼可以怎麼回事看起來你有什麼應該工作正常,但你可能要嘗試將不同的動作sp_btn_story類似於淡入或淡出以查看至少是否有任何行爲會起作用,否則您可能會嘗試在代碼的不同部分應用此操作,這些都不是解決方案,但它們可能會提供證據以指示究竟發生了什麼

+0

Rob:謝謝你的建議。我有一種預感,那是因爲我在「init」中添加了精靈,而不是「onEnter」,但我最終將其縮小到了確切的原因。這是因爲我沒有[super onEnter];哎呀。我補充說,它動畫很好。很高興知道! – taber 2010-03-03 08:38:31

+0

沒問題。幾個星期前,我犯了同樣的錯誤。忘記調用[super onEnter]與Cocos2D嚴重混淆。別忘了打電話給[super onExit]! – 2010-03-03 16:09:01

+0

不錯,我遇到了同樣的問題,謝謝你指出缺少[super onEnter]是問題的原因。我添加了這個答案,以使解決方案更加清晰。 – 2011-09-02 14:53:45