Chinaunix首页 | 论坛 | 博客
  • 博客访问: 5523466
  • 博文数量: 763
  • 博客积分: 12108
  • 博客等级: 上将
  • 技术积分: 15717
  • 用 户 组: 普通用户
  • 注册时间: 2007-09-28 21:21
个人简介

业精于勤,荒于嬉

文章分类

全部博文(763)

文章存档

2018年(6)

2017年(15)

2016年(2)

2015年(31)

2014年(14)

2013年(87)

2012年(75)

2011年(94)

2010年(190)

2009年(38)

2008年(183)

2007年(28)

分类: C/C++

2010-01-03 19:13:26

遊戲是這樣寫成的 (第六篇: 顯示文字)

图片:
很長時間沒更新教程了, 今天趁著項目沒那麼忙, 為大家解說一下怎樣在遊戲里顯示文字.

iPhone 系統里已有不少字體, 我們理論上可以用NSString 來畫字:

复制代码
  1. [string drawAtPoint:CGPointMake(x, y) withFont:font]


但因為速度關係和不想以系統的東西混合了OpenGL ES一起運用, 我們還得另外想想辦法.

如 果大家有詳細的看過Texture2D 的代碼, 會發現一個 initWithString 的生成貼圖的方法, 它的功能就是把一段文字, 畫在一張貼圖上, 我們跟著就可以應用這個貼圖在自己的遊戲中. 一般不用太多文字的遊戲, 這個方法基本就可以解決了我們的所需.

當然為了比較有彈性, 我們應該搞一個font 類, 讓我們可以任意的顯示每個英文字母! 有了這個想法, 於是就有了這次帶給大家的 CCFont!

在 Texture2D里新加了一個 makeASCIIBitmapFont 的功能, 它把由 ASCII 碼32 ~ 127 共95個字母, 都畫到一張貼圖上(見截圖下方), 而CCFont 就會根據這張貼圖, 生成95個 CCSprite 來對應每個字母, 接著我們就可以利用這個 CCSprite  陣矩來顯示字串了!

 
void CCFont::drawString(const char *text, float x, float y)
{
char ch;
int idx;
 
while ((ch = *text++) != 0)
{
idx = ch - 32;
mCharacters[idx]->render(x, y);
x += mCharWidthArray[idx];
 
}
}
 


CCSprite 也新加了setCenter, 大家現在可以任意設定CCSprite 的中心點!
附件: (441 K) 下载次数:594
阅读(891) | 评论(0) | 转发(1) |
给主人留下些什么吧!~~