BREW ISprite接口学习笔记2
来源:互联网 发布:恢复数据软件的标志 编辑:程序博客网 时间:2024/06/03 19:48
2010-04-30
一个tile map可以看做多个位图(tiles)组成的二维矩阵。所有的位图都具有相同的大小,并且相互之间无缝连接。
一个tile map可以表示成一个索引数组。元素在数组中的位置决定了该tile要在哪里绘制,而该元素保存的索引值则
决定了哪一个tile将被绘制。
不仅数组中的每个tile元素可以关联附加属性,比如透明度和简单的变换方式,而且,整个tile map也可以设定不同
的属性,比如绘制的偏移量,tile的大小,和是否自动滚动等。
tile map主要在游戏中绘制游戏背景。
主要涉及函数:
1)ISPRITE_SetTileBuffer()
2)ISPRITE_DrawTiles()
3)ISPRITE_SetTransformTable()
ISPRITE_SetTileBuffer()
函数原型:
int ISPRITE_SetTileBuffer(ISprite *po, uint8 unTileSize, IBitmap *pbmTileBuffer);
函数用于告知sprite引擎到哪里(pbmTileBuffer)查找特定大小的tile图像。sprite引擎为不同大小的tile维护
一个单独的缓冲区。tile在该图像缓冲区中以单列的形式进行排列,如同sprite一样。同样的,tile索引的作用与
sprite索引的作用一样,都用于定位不同的tile。
参数说明:
1)po:ISprite接口对象。
2)unTileSize:tile图像的大小(单个),与Sprite解释相同。
3)pbmTileBuffer:用于关联到ISprite接口的图像源。与Sprite解释相同。当设置为NULL时,将强制释放
关联的图像源。
ISPRITE_DrawTiles()
函数原型:
int ISPRITE_DrawTiles(ISprite *po, AEETileMap *pMaps);
函数用于将pMaps数组中的tile maps绘制到指定缓冲区。数组中的每个元素都描述了一个tile map对象。
sprite引擎会遍历该数组一次。
pMaps中必须有一个元素的pMapArray字段设为NULL,表示该数组结束。
参数说明:
1)po:ISprite接口对象。
2)pMaps:AEETileMap结构的数组。
typedef struct {
uint16 *pMapArray;
uint32 unFlags;
uint32 reserved[4];
int32 x;
int32 y;
uint16 w;
uint16 h;
uint8 unTileSize;
uint8 reserved2[3];
} AEETileMap;
参数说明:
1)pMapArray:tile图像索引和属性的数组。它是二维tile矩阵的一维表示。数组中的每个元素
包含了相应tile的索引和属性。
每个元素的低10位表示tile在图像源中的索引:
TILE_INDEX_MASK和TILE_INDEX_NOTHING(0x03FF)
都表示不在该位置上绘制tile
高6为表示该tile的变换属性:
TILE_FLIP_X、TILE_FLIP_Y、(横向、竖向变换)
TILE_ROTATE_90、TILE_ROTATE_180、TILE_ROTATE_270(逆向旋转)
TILE_TRANSPARENT
每个元素的pMapArray都是以上一个或几个属性的组合。
当pMapArray设为NULL时,表示数组结束,该结构的其他字段此时无效。
2)unFlags:整个tile map的属性,目前只有MAP_FLAG_WRAP属性有效,表示可以连续显示。
3)reserved:预留属性,必须设为0。
4)x,y:要绘制到屏幕上的整个tile map的左上角坐标,相对于屏幕左上角坐标(0,0)的偏移量。
注意,地图的大小一般比屏幕的要大(减少地图重绘次数),所以y有可能为负值,
表示超出屏幕大小的位置。这一点与sprite有所区别。
位图:
5)w,h:整个tile map的大小,定义tile的个数,相当于tile矩阵的列数和行数。
使用MAP_SIZE_*表示。 *为2n
6)unTileSize:每个tile的大小,表示为TILE_SIZE_*。
7)reserved2:预留位,必须设置为0。
ISPRITE_SetTransformTable()
函数原型:
int ISPRITE_SetTransformTable(ISprite *po, AEETransformMatrix *pTransformTable);
- BREW ISprite接口学习笔记2
- BREW ISprite接口学习笔记
- ISprite接口学习笔记
- BREW学习笔记-IBitmap 接口(一)
- BREW学习笔记-IBitmap 接口(二)
- BREW学习笔记-IBitmap 接口(三)
- BREW学习笔记 - IDIB 接口(一)
- BREW学习笔记 - 初识Brew
- BREW学习笔记
- BREW学习笔记一
- BREW 学习笔记
- BREW 学习笔记
- BREW学习笔记(1)
- Brew学习笔记 - 使用工具
- BREW接口
- BREW接口
- BREW接口
- Brew 学习
- jDom 和dom4j 输出的中文乱码的解决方案
- 连接到FMS服务器(Flash/Flex两种实现)
- 敏捷开发与工作计划的博弈之一
- pku2184 Cow Exhibition
- Thread:sleep---wait的不同
- BREW ISprite接口学习笔记2
- 定义各种事物的类型
- How to Develop and Run JavaFX Applications Offline
- 判断JS键盘事件
- Java5.0垃圾回收性能调优-3、分“代”管理 3、1性能考虑[Vange译]
- 正则表达式
- 前向声明
- 图像锐化算法 C++ 实现
- 消息编码