cocos2d(x) HTML label ;CCHTML CCHTMLLabel
这几天由于特殊需要,写了一个HTMLLabel。可以直接支持HTML的几种格式,<font> <a href> color size 等等。
参考object C的一个ios开源控件。根据需要集成到cocos2dx中CCLabelTTF中了。
实现方式是
1、解析html标签保存各个属性。
2、调用coreText来画字体。
3、计算trueType字体的大小,设置label尺寸属性。
4、计算url的位置,并且生成button结构体,保存图片的hotspots和相应URL
5、添加label的回调函数,应对不同的url的点击事件;
用途:
这个HTMLLabel在游戏中的用处很大,可以做聊天系统,也可以做消息系统。 比如WOW中 带颜色和超链接的喊话,点击其中的物件可以直接查看。。。
缺点:
由于实现是依赖coreText所以只支持ios,想要android的话,必须用libttf重写底层绘制部分。以前做MP4的时候定制过libtruetype的库,也写过基于frameBuffer的GUI sdk,所以如果有必要应该也是可以搞定。
总结:整个难度不大,主要是了解coreText或者trueType库的使用和ttf字体绘制细节。
- CCHTMLLabelTTF* pLabel2 = CCHTMLLabelTTF::create("Hllo,<font face='HelveticaNeue-CondensedBold' size=60 color='#00CC00'>先生</font>早上好,<a href='action=show'><font color='#FF00FF'>要吃点什么呢?</font>你到底\n吃不吃?</a>\n您的金钱:<a href='item=ID10086'><font color='#FF0000'>2000</font></a>", "Thonburi", 32);
- pLabel2->setAnchorPoint(ccp(0,1));
- pLabel2->setPosition( ccp(300, 680) );
- pLabel2->addCallBackListener(this, menu_selector(HelloWorld::labelCallback));
- std::string str;
- str.assign("action=show");
- pLabel2->urls.push_back(str);
- str.assign("item=ID10086");
- pLabel2->urls.push_back(str);
- this->addChild(pLabel2, 1);
- this->pLabel2 = (CCLabelTTF*)pLabel2;
以上为该label的初始化。包括html内容,回调函数,回调函数的监听内容。
代码较多,稍后整理再上传吧。。。,等不及的给我邮箱留言。
cocos2d(x) HTML label ;CCHTML CCHTMLLabel的更多相关文章
- cocos2dx lua
对于游戏公司而言.採用游戏脚本lua.python等进行开发也非经常见,可是非常多童鞋对脚本并没有非常熟悉的概念,本篇则向大家简介脚本的用途以及在Cocos2dx基础使用方法: Lua和python这 ...
- cocos2d-x CC_SYNTHESIZE_READONLY
//定义一个只读属性Label,在类定义中可以使用this->getLabel来访问 CC_SYNTHESIZE_READONLY(cocos2d::CCLabelTTF*,_label ...
- (15)如何使用Cocos2d-x 3.0制作基于tilemap的游戏:第三部分(完)
引言 程序截图: 在第二部分教程中,Ray教大家如何在地图中制作可碰撞的区域,如何使用tile属性,如何制作可以拾取的物品以及如何动态修改地图.如何使用“Heads up display”来显示分数. ...
- 【COCOS2DX-LUA 脚本开发之一】在Cocos2dX游戏中使用Lua脚本进行游戏开发(基础篇)并介绍脚本在游戏中详细用途!
[COCOS2DX-LUA 脚本开发之一]在Cocos2dX游戏中使用Lua脚本进行游戏开发(基础篇)并介绍脚本在游戏中详细用途! 分类: [Cocos2dx Lua 脚本开发 ] 2012-04-1 ...
- cocos2d/x 自带字体(label)
CCLabelTTF* label1 = CCLabelTTF::labelWithString("1掼蛋as", "AppleGothic", 15); la ...
- 小尝试一下 cocos2d
好奇 cocos2d 到底是怎样一个框架,正好有个项目需要一个游戏框架,所以稍微了解了一下.小结一下了解到的情况. 基本概念 首先呢,因为 cocos2d 是基于 pyglet 做的,你完全可以直接用 ...
- 如何优化cocos2d程序的内存使用和程序大小
在我完成第一个游戏项目的时候,我深切地意识到"使用cocos2d来制作游戏的开发者们,他们大多会被cocos2d的内存问题所困扰".而我刚开始接触cocos2d的时候,社区里面的人 ...
- cocos2d学习笔记
doxygen工具 生成cocos2d的api文档 位图字体编辑工具 Glyph Designer http://www.71squared.com/glyphdesigner 收费的 CCLabl ...
- 如何优化cocos2d程序的内存使用和程序大小:第一部分
译者: 在我完成第一个游戏项目的时候,我深切地意识到“使用cocos2d来制作游戏的开发者们,他们大多会被cocos2d的内存问题所困扰”.而我刚开始接触cocos2d的时候,社区里面的人们讨论了一个 ...
随机推荐
- android 使用asm.jar将android手机屏幕投射到电脑
使用asm.jar将Android手机到电脑屏幕投影 有时候可能须要将手机上的一些操作投影出来,比方一些App Demo的展示等.事实上,有专门的硬件设备能干这件事儿.但不是必需专门为展示个Demo去 ...
- C# 实现 Hyper-V 虚拟机 管理
原文:C# 实现 Hyper-V 虚拟机 管理 Hyper-V WMI Provider 工具类如下: "; break; } return status; } } /// <summ ...
- C# ASP.NET CSV文件导入数据库
原文:C# ASP.NET CSV文件导入数据库 using System; using System.Collections.Generic; using System.Text; using Sy ...
- YII编码规范
类名称: 驼峰式 首字母大字 class PointController class PointRatioController 公共成员方法: 驼峰式 首字母小写 public function ge ...
- ZOJ 2109 FatMouse' Trade (背包 dp + 贪婪)
链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=1109 FatMouse prepared M pounds of cat ...
- GitHub上整理
GitHub上整理 技术站点 Hacker News:非常棒的针对编程的链接聚合网站 Programming reddit:同上 MSDN:微软相关的官方技术集中地,主要是文档类 infoq:企业级应 ...
- UpdateModel方法
WebForm 对 MVC 说:能否借你的UpdateModel方法来用用? 背景 ASP.NET MVC的Controller有个很不错的方法:UpdataModel (相对应的还有TryUpdat ...
- Virtualbox之Ubuntu虚拟机网络访问设置
在本机(Win7)中 利用VirtualBox安装了一个Ubuntu虚拟机,由于使用桥接,所以本机和虚拟机处于同一个网络局域网下,,主机能访问虚拟机.可是在Ubuntu更新软件的时候才发现不能联网.首 ...
- Asterisk 未来之路3.0_0002
原文:Asterisk 未来之路3.0_0002 伟大的变化需要可扩展性技术 每一个现有的PBX都因为其自身的缺点变的糟糕,不管其功能如何丰富,总有一些东西会漏掉.具备非常完全功能的PBX 也不能预见 ...
- [译]Java 设计模式之适配器
(文章翻译自Java Design Pattern: Adapter) 适配器模式在现在的Java框架中被频繁的用到. 当你想去使用一个存在的类而且它的接口和你需要的不吻合,或者是你想去创建一个可复用 ...