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中。添加后的代码如下
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 原创,欢迎转载分享。请尊重作者劳动,转载时保留该声明和作者博客链接,谢谢!