声 明本教程仅用于初学cocos2dx同学使用,内容由本人(孤狼)学习过程中笔记编写,本教程使用cocos2dx版本为2.1.4。本教程内容可以自由转载,但必须同时附带本声明,或注明出处。gl.paea.cn版权所有。
头疼啊。早知道就早点睡了。哎。。。可是功课不能落下,好了开始今天的学习吧。上节我们说到“和屌丝一起学cocos2dx-Hello World”相信大家已经对cocos2dx的那个示例很熟悉了,那么这节,我们就开始自己动手来做个属于我们自己的hello world吧,这样有利于哦我们更好的去熟悉和使用这些代码和环境。
还记得我举例子的那张图吗?
我们今天就做这个吧。
首先呢,就是先准备好要用的素材。一共是两个,一个是鱼,一个是海底。这里我都给大家提供了,如果你想和我做一样的,就直接下载我的素材就行了。
素材一:
素材二:
【一】:自己的Hello World
首先还是新建一个项目的啦。
名称就叫做Myhello吧。
创建好了之后呢,我们去我们的项目文件夹下,找一个叫Resources的文件,这里呢,放着我们的所有的素材啦。
放好了以后,我们把他们添加进我们的项目中来。
好了,现在你看到项目中已经可以开到这两张图片了,那么接下来我们就去拜访一下 .h 文件吧。
1.MyhelloScece.h
我们先创建一个新的 .h 文件MyhelloScece.h(在include文件夹上右键--添加--新建项)。
那么接下来开始写我们的MyhelloScece.h文件吧。
首先,要写上引入文件。
#ifndef __MYHELLOWORLD_SCENE_H__
#define __MYHELLOWORLD_SCENE_H__
#include "cocos2d.h"
#include "Box2D/Box2D.h"
#include "SimpleAudioEngine.h"
估计这里有人已经看不懂了,好吧,来解释一下,最上面的 #ifndef 是if语句的变形,这里是 if not define 就是说如果没有定义后面的那个常量,就继续执行,当然了和if语句一样他有个结尾 #endif ,要判断后才执行的语句都放到中间来。这样能看懂了吧,下面的是3个引用类,就没什么好解释的了。
写完引入文件之后呢我们开始写这个类。
我们写个Myhello类,让他继承父类。
class Myhello : public cocos2d::CCLayer
{
public:
//初始化
virtual bool init();
//创建一个静态的场景函数 myscene
static cocos2d::CCScene* myscene();
//定义一个菜单回调函数
void menuCloseCallback(CCObject* pback);
//创建这个对象
CREATE_FUNC(Myhello);
};//<--最后的那个“;”别忘了<>
最后别忘了if的结尾啊 #endif
2.MyhelloScene.cpp
之后我们再继续创建一个新的cpp文件来调用。就起名叫MyhelloScene.cpp
首先呢,还是一样的,要引入一些文件进来。
#include "MyhelloScene.h"
先把我们写好的类引进来。
using namespace cocos2d;
然后我们使用一下 命名空间 cocos2d。
之后我们开始写我们的场景函数
再之后我们开始写自己的初始化函数,顺便把回调也一起写完
3.运行
好了全部写完之后,我们生成一下,生成成功了,OK,点击调试。
靠!为毛的那个该死的椰子又出来了?我的鱼呢?还我 fish .......
其实,这不怪椰子的啦。因为我们还没有改主程序呢。好了,来一起看看入口文件AppDelegate.cpp吧。
这里呢,我还是直接在文件上注释给大家看,免得大家对不上号。
好了那么接下来我们运行一下看看。
哈哈,成功了。可是.....为毛文字变成乱码了。为毛啊。
【二】:字体显示
好吧,这里还是说一下。创建字体有三种方式:CCLabelTTF、CCLabelAtlas、CCLabelBMFont
这三种呢,第一种就是我们这里用的。但是先告诉大家,这种在大量调用的时候会很费资源,所以尽力不去用他,选择第二种或第三种来用。
这三种方式的创建方式是:
CCLabelTTF::create(要显示的字符串,字体名称,字体大小)
CCLabelAtlas::create(要显示的字符串,文字图片资源名称,每个字的宽,每个字的高,字体起始标示)
CCLabelBMFont::create(要显示的字符串,字体资源名称)
乱码问题:
这里不得不抨击一下微软,如此巨大的编辑软件竟然不支持转码。
解决问题的方法有很多,可以直接使用内部函数转换为UTF-8编码,也可以自己写函数来转换编码。但我这里就不用那些方法了。我比较懒,使用的是用Editplus这样的软件直接吧cpp文件修改为Utf-8编码。(.h文件不要修改,不然会出错的。)
然后运行一下就可以看到最后的效果了。
字体问题:
字体问题一直困扰着我好久。试过很多方法都不能奏效。这里说一下我的过程。
1.用 CCLabelTTF方法。
CCLabelTTF * pmyLabel = CCLabelTTF::create("和屌丝一起学cocos2dx","微软雅黑",24);
输出后,字体没有变,也没有找到有效的载入字体的方法。失败。。。
2.用 CCLabelBMFont方法。
CCLabelBMFont* pmyLabel = CCLabelBMFont::create("和屌丝一起学cocos2dx","12.fnt");
使用bmfont工具制作了文字的fnt文件,但是载入之后
可以看到后面有黑色背景,一直去不掉。失败。。。
3.用 CCLabelAtlas方法。
CCLabelAtlas* pmyLabel=CCLabelAtlas::create("1321", "ziti.png", 14, 21, '0');
这个方法成功了,但是制作图片上比较费事。感谢Cocos2der分享的这种方法。
如果你看了本教程并知道前两种方法的使用方式的话,请联系告诉我,万分感谢。