2010-07-02 4 views
0

free4machine membres PM cet utilisateurproblème au sujet cocos2d CCMenuItemImage chevauchement

Salut,

Je veux faire une animation échantillon:

il y a un bouton en bas de l'écran, une petite menu apparaîtra lorsque ce bouton est pressé. Et il y a une icône au bas du petit menu, le petit menu disparaîtra quand cette icône est pressée.

Le bouton, petit menu, icône, tous sont des instances de CCMenuItemImage. Question: le petit menu ne disparaît pas lorsque l'on appuie sur l'icône. il semble que l'icône ne répond pas pour les événements tactiles.

Toute suggestion ou aide sera appréciée

Désolé pour mon mauvais anglais.

Voici le code:

CCMenuItemImage *bg = [CCMenuItemImage itemFromNormalImage:@"b1.png" selectedImage:@"b2.png" ]; 
CCMenuItemImage *button = [CCMenuItemImage itemFromNormalImage:@"button.png" selectedImage:@"button2.png" target:  self selector:@selector(showSideMenu:)]; 

CCMenuItemImage *sideMenu = [CCMenuItemImage itemFromNormalImage:@"s1.png" selectedImage:@"s2.png" ]; 
CCMenuItemImage *backbutton = [CCMenuItemImage itemFromNormalImage:@"backbutton.png" selectedImage:@"backbutton2.  png" target:self selector:@selector(hideSideMenu:)]; 

[ sideMenu addChild: backbutton ]; 

CCMenu *menu = [ CCMenu menuWithItems: bg,button, sideMenu, nil ]; 

[ self addChild: menu]; 

Que fait showSideMenu et hideSideMenu ne fait sideMenu apparaître et disparaître en utilisant runAction.

merci.

Répondre

1

Basé sur le code, le seul problème que je vois est que backButton n'est pas ajouté en tant qu'enfant du menu. Seuls bg, button et sideMenu sont dans la liste des arguments. En l'ajoutant en tant qu'enfant de bg, il ne déclenchera pas son propre sélecteur, mais bg. Et puisque bg n'a pas de défini, rien ne se passe. La solution la plus simple consiste simplement à ajouter un bouton arrière à la liste. Votre code ressemblera à ceci:

CCMenuItemImage *bg = [CCMenuItemImage itemFromNormalImage:@"b1.png" selectedImage:@"b2.png" ]; 
CCMenuItemImage *button = [CCMenuItemImage itemFromNormalImage:@"button.png" selectedImage:@"button2.png" target:  self selector:@selector(showSideMenu:)]; 

CCMenuItemImage *sideMenu = [CCMenuItemImage itemFromNormalImage:@"s1.png" selectedImage:@"s2.png" ]; 
CCMenuItemImage *backbutton = [CCMenuItemImage itemFromNormalImage:@"backbutton.png" selectedImage:@"backbutton2.  png" target:self selector:@selector(hideSideMenu:)]; 

CCMenu *menu = [ CCMenu menuWithItems: bg,button, sideMenu, backbutton, nil ]; 

[ self addChild: menu]; 

Si vous voulez chacun des boutons pour être positionné par rapport au menu, juste définir leur propriété position.