Learning Cocos2d-x for XNA(3)——文字篇

文字,是人类文明的象征。

文字显示,可用字符串或文字图片显示。

字符串显示

字符串显示中,lable标签是最长见得。

新增一个类文件,取名StartPageScene,很显然,是个Scene(场景)类。

让其继承CCScene类:先using cocos2d,再继承CCScene

 1 using System;
 2 using System.Collections.Generic;
 3 using System.Linq;
 4 using System.Text;
 5 using cocos2d;
 6 
 7 namespace LearningCocos2d_xForXNA.Classes
 8 {
 9     class StartPageScene:CCScene
10     {
11 
12     }
13 }

同样的方法,新增StartPageLayer类,继承CCLayer类,作为StartPageScene下的一个Layer(层)。

 1 using System;
 2 using System.Collections.Generic;
 3 using System.Linq;
 4 using System.Text;
 5 using cocos2d;
 6 
 7 namespace LearningCocos2d_xForXNA.Classes
 8 {
 9     class StartPageLayer:CCLayer
10     {
11 
12     }
13 }

StartPageScene

在Scene中,添加构造方法StartPageScene(),建立StartPageLayer对象并将其添加到该Scene(场景)下。

 1 using System;
 2 using System.Collections.Generic;
 3 using System.Linq;
 4 using System.Text;
 5 using cocos2d;
 6 
 7 namespace LearningCocos2d_xForXNA.Classes
 8 {
 9     class StartPageScene:CCScene
10     {
11         /// <summary>
12         /// 构造方法
13         /// </summary>
14         public StartPageScene()
15         {
16             CCLayer _startPageLayer = new StartPageLayer();//StartPageLayer对象
17             this.addChild(_startPageLayer);//将Layer对象添加到Scene下
18         }
19     }
20 }

StartPageLayer

在Layer层,添加构造方法,添加Label内容到Layer层下。

 1 using System;
 2 using System.Collections.Generic;
 3 using System.Linq;
 4 using System.Text;
 5 using cocos2d;
 6 
 7 namespace LearningCocos2d_xForXNA.Classes
 8 {
 9     class StartPageLayer:CCLayer
10     {
11         /// <summary>
12         /// 构造方法
13         /// </summary>
14         public StartPageLayer()
15         {
16             //创建一个Lable标签,显示文字StartPage
17             //Arial为内容管道中的字体纹理
18             //30为字体大小
19             CCLabelTTF lbl_Start = CCLabelTTF.labelWithString("StartPage", "Arial", 30);
20             CCSize size = CCDirector.sharedDirector().getWinSize();//通过CCDirector(导演)获取窗口大小
21             lbl_Start.position = new CCPoint(size.width / 2, size.height / 2);//设置lbl_Start的显示位置
22             this.addChild(lbl_Start);//将其添加到Layer下
23 
24         }
25     }
26 }

修改起始页面

打开AppDelegate.cs文件,添加对Classes文件夹添加using。

using LearningCocos2d_xForXNA.Classes;

注释如下代码

//CCScene pScene = LearningCocos2d_xForXNAScene.scene();

添加

            //CCScene pScene = LearningCocos2d_xForXNAScene.scene();

            CCScene pScene = new StartPageScene();

编译一下,显示效果

图片显示

图片中,最常用的是CCSprite(当然游戏中经常用其作为角色的图片)。

在上述代码基础上,在内容管道Content中添加文件夹img(用于存放图片),并将图片添加到其中。

打开StartPageLayer.cs,创建CCSprite对象,读取图片,添加到Layer中。添加后的代码如下

StartPageLayer
 1 using System;
 2 using System.Collections.Generic;
 3 using System.Linq;
 4 using System.Text;
 5 using cocos2d;
 6 
 7 namespace LearningCocos2d_xForXNA.Classes
 8 {
 9     class StartPageLayer:CCLayer
10     {
11         /// <summary>
12         /// 构造方法
13         /// </summary>
14         public StartPageLayer()
15         {
16             //创建一个Lable标签,显示文字StartPage
17             //Arial为内容管道中的字体纹理
18             //30为字体大小
19             CCLabelTTF lbl_Start = CCLabelTTF.labelWithString("StartPage", "Arial", 30);
20             CCSize size = CCDirector.sharedDirector().getWinSize();//通过CCDirector(导演)获取窗口大小
21             lbl_Start.position = new CCPoint(size.width / 2, size.height / 2);//设置lbl_Start的显示位置
22             this.addChild(lbl_Start);//将其添加到Layer下
23 
24             CCSprite img_SGQ = CCSprite.spriteWithFile("img/imgSGQ");//读取内容管道(Content)中图片
25             img_SGQ.position = new CCPoint(size.width / 2, size.height / 3);//设置图片位置
26             this.addChild(img_SGQ);//将其添加到Layer下
27 
28         }
29     }
30 }

编译,显示效果

文字显示的两种形式基本这样,当然,引擎还有很多种用于显示文字的方法,基本上变通使用即可。

注意:字符串显示时,中文显示会有问题,无论是XNA游戏显示中文,还是Cocos2d-x for xna显示,都有点麻烦。当然,纯xna显示时的确有点麻烦,但在Silverlight+xna通过Silverlight显示就显得简单不得了。cocos2d-x for xna没有Silverlight,显示中文也和xna一样,当然变通一下就是通过图片显示呗。当然,显示中文还是有办法的,欲知中文显示,下回分解。

示例源码下载

著作权声明:本文由http://www.cnblogs.com/suguoqiang 原创,欢迎转载分享。请尊重作者劳动,转载时保留该声明和作者博客链接,谢谢!

posted @ 2013-01-20 21:08 Ghost Soar 阅读(...) 评论(...) 编辑 收藏