【Cocos2d-X游戏实战开发】捕鱼达人之菜单按钮的创建(四)

本教程介绍如何在Cocos2d-x项目中创建菜单按钮,包括使用SpriteFrameCache加载图片资源、创建菜单项及响应事件。通过具体代码示例展示了按钮的创建过程。

本系列学习教程使用的是cocos2d-x-2.1.4(最新版为cocos2d-x-2.1.5)

博主发现前两个系列的学习教程被严重抄袭,在这里呼吁大家请尊重开发者的劳动成果,

转载的时候请务必注明出处:http://blog.youkuaiyun.com/yangyu20121224/article/details/11748575

不好意思,让大家久等了,这几天公司的事情也是比较的多,也请大家见谅。在这里

博主向大家承诺,只要有时间,一到两天就会更新一次。好的,话不多说,马上开始

今天的主题——菜单按钮的创建。

一、项目编码

这一期的内容比较简单,但是博主在查找和调式图片上花了点的时间,编写的代码倒是没有多少,主要是在

StartScene类中添加代码。

1、StartScene.h头文件。

#ifndef __FishingJoy__StartScene__
#define __FishingJoy__StartScene__

#include "cocos2d.h"

USING_NS_CC;

class StartLayer : public cocos2d::CCLayer
{
public:
    static CCScene* scene();
    
	bool init();
    
	void start_callback(CCObject* pSender);

	void scene_callback(CCObject* pSender);

	CREATE_FUNC(StartLayer);
};
#endif


在这个头文件中,我们主要添加了两个点击菜单按钮事件的回调方法。

2、StartScene.cpp文件。

<1> 首先我们需要在init函数中添加如下所示的代码,这段代码就是开始场景中菜单按钮的创建。

//加入plist文件
	CCSpriteFrameCache::sharedSpriteFrameCache()->addSpriteFramesWithFile(STATIC_DATA_STRING("StartScene_Texture"));
	CCSpriteFrameCache::sharedSpriteFrameCache()->addSpriteFramesWithFile(STATIC_DATA_STRING("Button_Texture"));

	//创建“开始游戏”和“选择场景”按钮
    CCMenuItemSprite* startBt = CCMenuItemSprite::create(CCSprite::createWithSpriteFrameName(STATIC_DATA_STRING("start_normal")), CCSprite::createWithSpriteFrameName(STATIC_DATA_STRING("start_selected")), this,menu_selector(StartLayer::start_callback));
	CCMenuItemSprite* sceneBt = CCMenuItemSprite::create(CCSprite::createWithSpriteFrameName(STATIC_DATA_STRING("scene_normal")), CCSprite::createWithSpriteFrameName(STATIC_DATA_STRING("scene_selected")), this,menu_selector(StartLayer::scene_callback));
  
	//创建菜单并添加按钮
	CCMenu* menu = CCMenu::create(startBt, sceneBt, NULL);
	//设置菜单的位置
    menu->setPosition(CCPointMake(winSize.width * 0.5, winSize.height * 0.3 - 15));
	//设置菜单间按钮的间距
    menu->alignItemsVerticallyWithPadding( 30 );
	//添加菜单至图层中
	this->addChild(menu);

	//利用帧缓存创建精灵
	//创建“开始游戏”和“选择场景”图片精灵
	CCSprite * start = CCSprite::createWithSpriteFrameName(STATIC_DATA_STRING("start"));
	CCSprite * scene = CCSprite::createWithSpriteFrameName(STATIC_DATA_STRING("scene"));
	
	//设置图片精灵的位置
	start->setPosition(CCPointMake(winSize.width * 0.5,winSize.height * 0.3 + 25));
	scene->setPosition(CCPointMake(winSize.width * 0.5,winSize.height * 0.2 - 35));

	//添加图片精灵
	this->addChild(start); 
	this->addChild(scene); 


<2> 然后在添加两个回调函数start_callback和scene_callback,这里我们先打印Log。

void StartLayer::start_callback(CCObject* pSender){
    CCLOG( "start game");
}

void StartLayer::scene_callback(CCObject* pSender){
    CCLOG( "select scene");
}

<3> 可以查看打印Log日志的结果如下图所示。

3、最后别忘了在static_data.plist文件中添加读取图片的路径,否则程序会报异常。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
	<key>default_gold</key>
	<string>200</string>
	<key>title</key>
	<string>title.png</string>
	<key>background</key>
	<string>background.png</string>
	<key>StartScene_Texture</key>
	<string>StartScene.plist</string>
	<key>start_normal</key>
	<string>ui_button_box02_02.png</string>
	<key>start_selected</key>
	<string>ui_button_box02_01.png</string>
	<key>scene_normal</key>
	<string>ui_button_box01_02.png</string>
	<key>scene_selected</key>
	<string>ui_button_box01_01.png</string>
	<key>Button_Texture</key>
	<string>Button.plist</string>
	<key>start</key>
	<string>ui_2p_010.png</string>
	<key>scene</key>
	<string>button_other_014.png</string>
	</dict>
</plist>


4、运行效果图。

好的,这一期正如大家所见,编写的代码也是非常的简单,但是大家可能不知道,这个调试的过程一点都不

简单。下一期博主会给大家带来进度条场景的创建。

源码下载地址(百度云)

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值