Cocos2d-X菜单教程:第三部分

本文详细介绍了如何使用Cocos2d-X为游戏菜单添加图片资源,包括为已有层添加背景、设置菜单按钮的正常与选中状态,并提供了资源导入与层继承的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本文的Cocos2d版本由 子龙山人 翻译,欢迎转载分享。请尊重作者劳动,转载时保留该声明和作者博客链接,谢谢!首发于泰然论坛

原文链接地址:

http://www.iphonegametutorials.com/2010/09/07/cocos2d-menu-tutorial-part-3/


现在,我们已经在菜单上面做了大量文章了。可能你会问,我们还能干嘛?耐心点,我的朋友!今天我们将接触menu item 的图片。很期待吧?呵呵

老实说,如果你没有图片资源,你啥事也做不好。你真的需要一些教程来教你如果为菜单定制图片,这也是这篇教程的来由


好了,我们这次要完成哪些内容呢---下面是今天的日程表:

为所有已经存在的 Layer添加一个 BaseLayer作为背景。

给“Start Game”和“Credits”按钮添加“on”和“off”状态。也就是normal 状态和selected状态。

好,让我们开始吧

首先,创建一个 BaseLayer.h和.cpp文件,加错的不会加的,请自觉面壁弹JJ

cocos2d的所有资源

上面是cocos2d版的所有资源,由于我们这是用cocos2d-x实现,所以 我们只需要把里面的图片资源取出来就好

之后修改BaseLayer.h 和.cpp文

BaseLayer.h内容如下

#ifndef menu_test_part1_BaseLayer_h
#define menu_test_part1_BaseLayer_h
#include "cocos2d.h"
using namespace cocos2d;

class BaseLayer:public CCLayer
{
public:
    virtual bool init();
    
    LAYER_NODE_FUNC(BaseLayer);
};



#endif

BaseLayer.cpp内容如下

#include <iostream>
#include "BaseLayer.h"
#include "cocos2d.h"

bool BaseLayer::init()
{
    if (!CCLayer::init())
    {
        return false;
    }
    this->setIsTouchEnabled(true);
    //启用触摸
    
    CCSprite *bg=CCSprite::spriteWithFile("background.png");
    
    bg->setPosition(ccp(160,240));
    
    this->addChild(bg,0);
    
    return true;
    
}

cpp里面我们使用图片设置了背景精灵,现在我们把它导入的工程中,

右击“Resources”分组,然后选择 Add,到点击“Existing files”,然后从弹出的对话框里选择你需要的png 文件

和添加Classes的方式一样,这里就不多说了.


之后在每个Layer中导入BaseLayer

MenuLayer.h

#include "BaseLayer.h"
class MenuLayer:public BaseLayer
PlayLayer.h

#include "BaseLayer.h"
class PlayerLayer:public BaseLayer


CreditsLayer.h

#include "BaseLayer.h"
class CreditsLayer:public BaseLayer


原先以上三个Layer都是继承CCLayer的  现在他们继承BaseLayer,

而且 注意所有原先继承Layer的 cpp文件中也要改..

一个是增加

#include “BaseLayer.h”

另一个是将init中的if语句修改为

if (!BaseLayer::init())

.......

现在初始化的时候就会把 backgroud.png设为背景了


接下来,我们增加菜单按钮,图片在资源包里面有..当然你们也可以自己用Ps做 或者找美术朋友帮你们弄

每个菜单项对应两张图片:(对应两种状态)

  •   newGameBtn.png

  •   newGameBtn_over.png

  •   creditsBtn.png

  •   creditsBtn_over.png

    一种状态是按钮空闲时候显示的图片,另一种状态是用户按住菜单项的状态。我们会把这 4张图片全部添加到 Resource 文件夹中,和之间添加 background.png 图片一样。

    因此,我们项目中有图片了,接下来呢?
    首先,找到
    MenuLayer.cpp文件,把 startNew 从文本形式:

  •     CCMenuItemFont* startNew=CCMenuItemFont::itemFromString("New Game", this, menu_selector(MenuLayer::onNewGame));
  • 改为图片形式
  •     CCMenuItemImage* startNew=CCMenuItemImage::itemFromNormalImage("newGameBtn.png", "newGameBtn_over.png","newGameBtn.png",this,menu_selector(MenuLayer::onNewGame));
  • disabledImage 是可选的,如果你有一个 disabled 图片就更好了,其它我完全可以输入一个 nil,但是,这里我只是向你展示,可以这样使用。

  • 大家可以利用这种方式,吧Credits也用图片替换下来
  • 下篇教程再见吧..



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值