Game Development Reference
Warning The lists of menu items always end with nil as the last parameter.
This is a technical requirement. If you forget to add nil as the last parameter,
your app will crash at that particular line.
It takes a fair bit of code to set up a menu. The first menu item is based on
CCMenuItemFont and simply displays a string. When the menu item is touched, it
calls the method menuItem1Touched . Internally, CCMenuItemFont simply cre-
ates a CCLabel . If you already have a CCLabel , you can use that with the
CCMenuItemLabel class instead.
Likewise, there are two menu item classes for images: one is CCMenuItemImage ,
which creates an image from a file and uses a CCSprite internally, and the other is
one I've used here, CCMenuItemSprite . This class takes existing sprites as input,
which I think is more convenient because you can use the same image and simply tint
its color to achieve a highlighting effect when touched.
CCMenuItemToggle accepts exactly two CCMenuItem -derived objects and, when
touched, toggles between the two items. You can use either text labels or images with
Finally, CCMenu itself is created and positioned. Because the menu items are all chil-
dren of CCMenu , they're positioned relative to the menu. To keep them from stacking
up on each other, you have to call one of CCMenu 's align methods, like alignItem-
sVerticallyWithPadding , as shown at the end of Listing 3-1 .
Because CCMenu is a node containing all menu items, you can use actions on the
menu to let it scroll in and out. This makes your menu screens appear less static, which
is usually a good thing. See the Essentials project for an example. In the mean-
time, take a look at Figure 3-9 to see what your current menu looks like.