一般游戏都有一个start开始按钮,或者press any key的按钮。当用户点击后,会显示出菜单。
我们将在上一个工程的基础上,继续来完成menu菜单的显示
首先,增加一个scene的场景,用来显示menu菜单:
- private void createMenu() {
- menuScene = new Scene();
- // 建立几个button
- // 200, 100:显示的位置
- // button:按钮图片, 这里就不再建立新的button图片了,复用上一个按钮图片
- ButtonSprite startBtn = new ButtonSprite(100, 100, button,
- getVertexBufferObjectManager(), new OnClickListener() {
- public void onClick(ButtonSprite pButtonSprite,
- float pTouchAreaLocalX, float pTouchAreaLocalY) {
- // 处理点击后操作
- }
- });
- ButtonSprite setBtn = new ButtonSprite(100, 200, button,
- getVertexBufferObjectManager(), new OnClickListener() {
- public void onClick(ButtonSprite pButtonSprite,
- float pTouchAreaLocalX, float pTouchAreaLocalY) {
- // 处理点击后操作
- }
- });
- ButtonSprite backBtn = new ButtonSprite(100, 300, button,
- getVertexBufferObjectManager(), new OnClickListener() {
- public void onClick(ButtonSprite pButtonSprite,
- float pTouchAreaLocalX, float pTouchAreaLocalY) {
- // 退回到最开始状态
- mScene.clearChildScene();
- mScene.attachChild(buttonSprite);
- }
- });
- // 添加到button到scene中
- menuScene.attachChild(startBtn);
- menuScene.attachChild(setBtn);
- menuScene.attachChild(backBtn);
- // 注册button的触摸机制
- menuScene.registerTouchArea(startBtn);
- menuScene.registerTouchArea(setBtn);
- menuScene.registerTouchArea(backBtn);
- // 如果你还要复用之前的背景话,这里设置为false,否则就是一片黑色背景
- menuScene.setBackgroundEnabled(false);
- }
接下来,再修改一个onCreateScene,增加上这个方法:
- // 创建菜单场景
- createMenu();
还有,修改之前开始按钮的监听内容:
- buttonSprite = new ButtonSprite(480, 300, button,
- getVertexBufferObjectManager(), new OnClickListener() {
- // 建立监听,当用户点住不放的时候,button图片会切换,但不会执行onClick里的操作
- // 当用户松开的时候,才会执行
- public void onClick(ButtonSprite pButtonSprite,
- float pTouchAreaLocalX, float pTouchAreaLocalY) {
- // 当用户点下后,我们将这个button从场景中移除掉
- mScene.detachChild(buttonSprite);
- // 添加进来菜单
- mScene.setChildScene(menuScene);
- }
- });