赞 | 0 |
VIP | 10 |
好人卡 | 3 |
积分 | 1 |
经验 | 3584 |
最后登录 | 2015-10-25 |
在线时间 | 134 小时 |
Lv1.梦旅人
- 梦石
- 0
- 星屑
- 50
- 在线时间
- 134 小时
- 注册时间
- 2009-3-29
- 帖子
- 470
|
3楼
楼主 |
发表于 2011-11-4 00:08:02
|
只看该作者
皮卡星 发表于 2011-11-3 22:12
这么多事件不会卡么
暂时还没卡,不知道有没有一些脚本时临时缓冲地图的,如同网游,走到哪里缓冲哪里,而不是一次过加载完毕的...
黑之翅膀于2011-11-4 00:14补充以下内容:
不知道是啥...类似的...扣分吧...- package zhangrb.ui;
- import javax.microedition.lcdui.Graphics;
- import javax.microedition.lcdui.Image;
- /**
- * 地图缓冲类,生成一个和屏幕显示大小相同的缓冲图片,根据地图移动,尽量少的重绘地图
- * @author zhangrb
- */
- public abstract class BufferedImage{
- protected int x,y;// x,y坐标
- protected int w,h;// 宽度,高度
- protected int offx,offy;// 偏移量
- protected int Offx,Offy;// 当前偏移量
- protected Image buf;//缓冲图片
- protected Graphics bg;//缓冲绘制对象
- /**
- * 构造方法,指定宽度和高度
- */
- public BufferedImage(int w,int h) {
- this.w=w;
- this.h=h;
- buf=Image.createImage(w,h);
- bg=buf.getGraphics();
- bufferImpl(0,0,w,h);
- }
- /**
- * 绘制方法,供Canvas的绘制调用
- * @param g
- */
- public final void paint(Graphics g) {
- int clipX=g.getClipX();
- int clipY=g.getClipY();
- int clipW=g.getClipWidth();
- int clipH=g.getClipHeight();
- int tempx=offx%w;
- int tempy=offy%h;
- {
- g.clipRect(x,y,w-tempx,h-tempy);
- g.drawImage(buf,x-tempx,y-tempy,0);
- g.setClip(clipX,clipY,clipW,clipH);
- }
- if(tempx>0)
- {
- g.clipRect(x-tempx+w,y,tempx,h-tempy);
- g.drawImage(buf,x-tempx+w,y-tempy,0);
- g.setClip(clipX,clipY,clipW,clipH);
- }
- if(tempy>0)
- {
- g.clipRect(x,y-tempy+h,w-tempx,tempy);
- g.drawImage(buf,x-tempx,y-tempy+h,0);
- g.setClip(clipX,clipY,clipW,clipH);
- }
- if(tempx>0 && tempy>0)
- {
- g.clipRect(x-tempx+w,y-tempy+h,tempx,tempy);
- g.drawImage(buf,x-tempx+w,y-tempy+h,0);
- g.setClip(clipX,clipY,clipW,clipH);
- }
- }
- /**
- * 地图滚动
- */
- public final void scroll(int dx,int dy)
- {
- Offx+=dx;
- Offy+=dy;
- }
- /**
- * 滚动地图到指定坐标
- */
- public final void scrollTo(int x,int y)
- {
- this.Offx=x;
- this.Offy=y;
- }
- /**
- * 缓冲地图
- * @param force,强制重新缓冲
- */
- public final void buffer(boolean force)
- {
- /*
- * 地图无变化,
- */
- if(!force && Offx==offx && Offy==offy) return;
- /*
- * 地图变化较大,则全部重新缓冲
- */
- if(force || Math.abs(Offx-offx)>=w || Math.abs(Offy-offy)>=h)
- bufferImpl(0,0,w,h);
- else
- {
- int minX=Math.min(Offx%w,offx%w);
- int maxX=Math.max(Offx%w,offx%w);
- int minY=Math.min(Offy%h,offy%h);
- int maxY=Math.max(Offy%h,offy%h);
- if(Offx/w==offx/w && Offy/h==offy/h)
- {
- bufferImpl(minX,0,maxX-minX,minY);
- bufferImpl(0,minY,w,maxY-minY);
- bufferImpl(minX,maxY,maxX-minX,h-maxY);
- }
- else if(Offx/w==offx/w)
- {
- bufferImpl(0,0,w,minY);
- bufferImpl(minX,minY,maxX-minX,maxY-minY);
- bufferImpl(0,maxY,w,h-maxY);
- }
- else if(Offy/h==offy/h)
- {
- bufferImpl(0,0,minX,h);
- bufferImpl(minX,minY,maxX-minX,maxY-minY);
- bufferImpl(maxX,0,w-maxX,h);
- }
- else
- {
- bufferImpl(0,0,w,minY);
- bufferImpl(0,minY,minX,maxY-minY);
- bufferImpl(maxX,minY,w-maxX,maxY-minY);
- bufferImpl(0,maxY,w,h-maxY);
- }
- }
- }
- /*
- * 缓冲具体实现,调用具体绘制方法 drawBuffer
- */
- private final void bufferImpl(int clipX,int clipY,int clipW,int clipH)
- {
- if(clipW<=0 || clipH<=0) return;
- int tempx=Offx%w;
- int tempy=Offy%h;
- // A
- {
- bg.translate(-bg.getTranslateX(),-bg.getTranslateY());
- bg.translate(-(Offx-tempx),-(Offy-tempy));
- bg.setClip(Offx,Offy,w-tempx,h-tempy);
- drawBuffer(bg);
- }
- // B
- if(tempx>0)
- {
- bg.translate(-bg.getTranslateX(),-bg.getTranslateY());
- bg.translate(-(Offx-tempx+w),-(Offy-tempy));
- bg.setClip(Offx-tempx+w,Offy,tempx,h-tempy);
- drawBuffer(bg);
- }
- // C
- if(tempy>0)
- {
- bg.translate(-bg.getTranslateX(),-bg.getTranslateY());
- bg.translate(-(Offx-tempx),-(Offy-tempy+h));
- bg.setClip(Offx,Offy-tempy+h,w-tempx,tempy);
- drawBuffer(bg);
- }
- // D
- if(tempx>0 && tempy>0)
- {
- bg.translate(-bg.getTranslateX(),-bg.getTranslateY());
- bg.translate(-(Offx-tempx+w),-(Offy-tempy+h));
- bg.setClip(Offx-tempx+w,Offy-tempy+h,tempx,tempy);
- drawBuffer(bg);
- }
- offx=Offx;
- offy=Offy;
- }
- /**
- * 缓冲绘制,子类实现
- */
- protected abstract void drawBuffer(Graphics g);
- }
复制代码
黑之翅膀于2011-11-4 01:04补充以下内容:
这道他们在干什么吗?他们都准备往河里跳,打算把那条河流给埋了 |
|