- 1、本文档共8页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
GameAPI(3):TiledLayer和图层管理
TiledLayer
TiledLayer(int columns,int rows, Image image,int tileWidth,int tileHeight):将图片用tileWidth,tileHeight分割,指定将要填充的列数和行数,注意,图片小块index从1开始
以下例子中,左边图片分为2个图片小块,填充右边的地图,四行四列
void paint(Graphics g) :画出TiledLayer
void setCell(int col,introw,int tileIndex) :将某个图片小块填入相应位置
int getCell(int col,introw) :得到某行某列的图片小块Index
int getCellHeight() /int getCellWidth()
int getColumns() /int getRows()
void fillCells(int col,introw,int numCols,int numRows,int tileIndex) :用一个图片小块填充整个网格
void setStaticTileSet(Image image,int tileWidth,int tileHeight) :修改图片
实际游戏中的技巧
应该将不同的物体弄成不同的图层
上图的地图应该是两个图层:墙壁一个,草地一个,为什么?
便于碰撞检测
图层管理器:LayerManager
有一种更好的方法来在界面上画图,不用针对一个个图层来画图了
void append(Layer l) :添加图层
void remove(Layer l) :去掉图层
void setViewWindow(intx,inty,intwidth,intheight) ,设置窗口的可视部分
void paint(Graphics g,intx,inty),将所有图层画统一画出来
【例题1】
public class MIDlet1 extends MIDlet {
private MyGameCanvas mgc = new MyGameCanvas();
private Display dis;
protected void startApp() throws MIDletStateChangeException {
dis = Display.getDisplay(this);
dis.setCurrent(mgc);
}
class MyGameCanvas extends GameCanvas implements Runnable{
private Image map;
private TiledLayer tl;
private Graphics gra;
public MyGameCanvas(){
super(true);
try{
map = Image.createImage(/map.png);
gra = this.getGraphics();
//用map.getWidth()/2,map.getHeight()大小将map分割
//分割之后去填充一个4行4列的网格地图(行列序号从0开始算),图片小块index从1开始
tl = new TiledLayer(4,4,map,map.getWidth()/2,map.getHeight());
//填充
tl.setCell(0, 0, 1);
tl.setCell(1, 0, 2);
tl.setCell(2, 0, 1);
tl.setCell(3, 0, 2);
tl.setCell(0, 1, 1);
tl.setCell(1, 1, 2);
tl.setCell(2, 1, 2);
tl.setCell(3, 1, 2);
tl.setCell(0, 2, 1);
tl.setCell(1, 2, 2);
tl.setCell(2, 2, 1);
tl.setCell(3, 2, 2);
tl.setCell(0, 3, 1);
tl.setCell(1, 3, 2);
tl.setCell(2, 3, 1);
tl.setCell(3, 3, 2);
tl.paint(gra);
}catch(Exception ex){
ex.printStackTrace(
您可能关注的文档
- cell banking related protocol summary【DOC精选】.doc
- Cell Death Detection ELISA PLUS【DOC精选】.doc
- CDEIC.Linux+Mono+XSP.Setup-v.【DOC精选】.doc
- CDMA多载波参数设置【DOC精选】.doc
- Cell junctions【DOC精选】.doc
- CDMA 双模手机上网设置 ~睿翼上网设置【DOC精选】.doc
- Cell Maintenance【DOC精选】.doc
- Cell culture techniques【DOC精选】.doc
- cell search【DOC精选】.doc
- cell-signaling【DOC精选】.doc
- DB44_T 2611-2025 城市排水管网有毒有害气体监测与风险分级管理技术标准.pdf
- DB44_T 2612-2025 竞赛类科普活动策划与实施服务规范.pdf
- DB43_T 2947-2024 烟草种子质量控制规程.pdf
- DB37_T 4836-2025 煤矿风量实时监测技术要求.pdf
- 叉车防撞系统,全球前22强生产商排名及市场份额(by QYResearch).docx
- 超滤膜,全球前18强生产商排名及市场份额(by QYResearch).docx
- DB62T 4172-2020 玉米品种 酒623规范.pdf
- DB62T 4160-2020 在用真空绝热深冷压力容器综合性能在线检测方法.pdf
- DB62T 4164-2020 辣椒品种 酒椒1号.pdf
- DB62T 4133-2020 公路隧道地质超前预报机械能无损探测技术规程.pdf
文档评论(0)