2009-05-20 5 views
0

Question Cocos2d?Touchez dans cocos2d?

Comment changer le type de contact? Regardez ci-dessous

image = [MenuItemImage itemFromNormalImage:@"image1.png" selectedImage:@"image2.png" target:self selector:@selector(step1:)]; 
    Menu *menu = [Menu menuWithItems:image, nil]; 
    image.position = cpv(-135, -185); 
    [self addChild: menu z:2] 

L'étape 1 est un vide défini pour faire quelque chose plus tard dans le code. Mon problème n'est pas que l'étape 1 ne fonctionne pas, mon problème est que l'étape 1 va quand l'utilisateur touche à l'intérieur du bouton. Je voudrais qu'il fonctionne lorsque l'utilisateur touche à l'intérieur du bouton. Merci pour l'aide!

Répondre

1

Les menus MenuItem ne sont actuellement pas capables de répondre au 'contact amorcé' et sont codés en dur pour répondre uniquement à l''extrémité tactile'.

Dans Menu.m, à partir de la ligne 105, vous verrez la déclaration ccTouchesBegan.

Si vous souhaitez modifier le comportement actuel de menu, vous pouvez sous-classe comme si:

@interface MenuDown: Menu 
{ 
} 
@end 

@implementation MenuDown 
-(BOOL)ccTouchesBegan:(UITouch *)touches withEvent:(UIEvent *)event { 
    [self ccTouchesBegan:touches withEvent: event]; 
    if(item) { [item unselected]; [item activate]; } 
} 
@end 

Ce n'est pas testé, mais au fond ... Je viens empoigné un code de Menu.m dans le ccTouchesEnded , et copié dans une version surchargée de ccTouchesBegan pour la nouvelle classe MenuDown.

Vous pouvez ensuite définir votre menu comme:

MenuDown *menu = [MenuDown menuWithItems: image, nil]; 

Ce -should- vous donner une 'réaction au toucher a commencé' réponse de la ... de Cocos2D MenuItem

Cependant, ce n'est pas vraiment suggéré ... car je ne vois pas pourquoi vous voudriez que le 'bouton' réponde au toucher, par opposition à 'l'action finale' ... comme il est écrit, Menu permet actuellement à l'utilisateur de presser vers le bas , puis glissez pour annuler l'action de sélection du menu.

Menu/MenuItem ne sont pas destinés à être utilisés comme 'objets réactifs au contact' (c'est-à-dire des objets de jeu réels) si c'est, par hasard, ce que vous essayez de faire.