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

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

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

  

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

转载的时候请务必注明出处:http://blog.csdn.net/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日志的结果如下图所示。

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

 

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、运行效果图。

 

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

 

 

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

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

 

 

源码下载地址(百度云)