2012-06-25 39 views
0

實際上,只要按下按鈕,就需要移動我的精靈,並且釋放按鈕時應該停止精靈。Cocos2d-iphone:手柄按鈕按下並釋放

我的代碼如下:

CCMenuItemFont *item1 = [CCMenuItemFont itemFromString: @"icon.png" target:self selector:@selector(doit)]; 
     CCMenu * taskMenu = [CCMenu menuWithItems:item1, nil]; 
     [self addChild:taskMenu]; 

-void()doit 
{ 
     spritevelocity = 80; 
} 

上面的代碼,使我的精靈繼續當按鈕被竊聽移動,但我需要儘快鬆開按鈕停止我的精靈。

我想下面的代碼,但沒有成功:

-void()doit 
{ 
    buttonpressed = YES; 
    if (buttonpressed) { 
     spritevelocity = 80; 
    } 
} 

- (void)ccTouchesEnded:(NSSet *)touches withEvent:(UIEvent *)event { 
     buttonpressed = NO; 
} 

注:我只是想spritevelocity = 0,停止我的精靈,,這是我想spritevelocity = 0時鬆開按鈕

+0

您發佈的代碼不能編譯。 –

+0

它只是例子james – vishnu

+0

我們如何處理一個不起作用的例子。 –

回答

1

您需要繼承CCMenuItem以便覆蓋selectedunselectedactivate方法。在那裏,你可以強迫你按鈕按照你的想法行事。在這種情況下,不僅要按新聞,還要發佈。這是覆蓋CCMenu的一個很好的例子:http://johnehartzog.com/2009/10/easy-to-create-buttons-with-cocos2d/

+0

你好哨兵,,我的按鈕工作正常......但精靈繼續移動,當按鈕被點擊。即使釋放後它不停止,我想停止當按鈕被釋放 – vishnu

+0

要做到這一點,你需要抓住按鈕釋放時刻。要做到這一點,你需要子類按鈕。 – SentineL

+0

感謝讓我檢查 – vishnu

0

爲什麼不直接設置速度?

- (void)ccTouchesEnded:(NSSet *)touches withEvent:(UIEvent *)event { 
    buttonpressed = NO; 
    spritevelocity = 0; 
} 

您能否解釋何時調用了doIt

+0

是的,我嘗試過,但它的作品,當我觸摸屏幕上的其他地方,但不是當我按下並釋放CCMenu按鈕。 – vishnu

+0

檢查CCMenuItemFont * item1 = [CCMenuItemFont itemFromString:@「icon.png」target:self selector:@selector(doit)]; ,, – vishnu

+0

我監督了這一點,對不起......我認爲@SentineL給了你正確的答案......你需要重寫cocos2d按鈕的標準行爲來處理「touchUp」事件...... – sergio