CCAdvancedMenu boundaryRect

En espérant que quelqu'un puisse m'aider avec ça … Je suis en train de suivre les exemples vus ici pour CCMenuAdvanced mais je finis avec un résultat bizarre, je vois mon menu et il défile mais en utilisant la propriété boundaryRect je n'arrive pas à l'get pour cacher partie du menu et montrer ce que je veux.

Voici mon code:

// Setup Menu Alignment [menuA alignItemsVerticallyWithPadding:0 bottomToTop:NO]; //< also sets contentSize and keyBindings on Mac menuA.isRelativeAnchorPoint = YES; menuA.boundaryRect = CGRectMake(0, 100, 230, 200); [menuA fixPosition]; [self addChild:menuA]; 

Je suis capable de faire défiler et de voir toute ma list, ce qui est bien, mais je ne peux pas mettre en place une zone pour voir seulement une partie du menu à la fois, ce que boundaryRect devrait faire. Quelqu'un at-il déjà utilisé cela et peut-il me donner des conseils?!?

Merci!

Eh bien, pas de la même class, mais un drop down menu maison. J'utilise la visibilité et les transparences des menusItems eux-mêmes. Lorsque vous faites défiler vers le haut, si une label de menu approche le bord du rectangle, je commence à l'évincer à 0. Lorsque le point d'ancrage du menuItem est en dehors du rectangle, je donne sa visibilité à NO (donc je ne peux pas cliquer). Même en descendant. Le serrage est difficile. Vous devez définir ces propriétés lorsque la list de menusItems change, au cas où elle deviendrait plus courte que la hauteur du rectangle de délimitation, ou si elle augmente de nouveau plus grande que le rectangle. Quelque chose comme ceci (édité, pas le code réel … ne sait pas s'il comstack :)):

 -(void) fixMenuItemOpacity:(CCMenuItemLabel*) mi{ float theY = mi.position.y ; if (fadeOutZoneHeight_<4.0f) { if (theY> self.boundaryRect.origin.y+self.boundaryRect.size.height/2 - fadeOutZoneHeight_) { mi.visible=NO; } else if( theY < self.boundaryRect.origin.y-self.boundaryRect.size.height/2 + fadeOutZoneHeight_) { mi.visible=NO; } else { mi.visible=YES; } return; } float delta; float percentOpacity; float topWindow; float bottomWindow; float top; float bottom; /* not visible --------------------------- top visible, variable opacity --------------------------- top window opacity 100% -------------------------- bottomWindow visible, variable opacity ------------------------- bottom */ top = self.boundaryRect.origin.y + self.boundaryRect.size.height/2; topWindow = top - fadeOutZoneHeight_; bottom = self.boundaryRect.origin.y - self.boundaryRect.size.height/2; bottomWindow=bottom+ fadeOutZoneHeight_; if (theY> top ) { mi.visible=NO; } else if ( (theY > topWindow) && (theY < top)) { mi.visible=YES; delta = abs((int)top - (int)theY); percentOpacity=delta/fadeOutZoneHeight_; mi.opacity=(GLubyte )(255.0f*percentOpacity); } else if( (theY <= topWindow ) && (theY >= bottomWindow ) ){ mi.opacity=255; mi.visible=YES; } else if ( (theY < bottomWindow) && (theY >= bottom) ){ mi.visible=YES; delta= abs((int)bottom - (int)theY); percentOpacity = delta/fadeOutZoneHeight_; mi.opacity=(GLubyte ) (255.0*percentOpacity); } else { mi.visible=NO; } }