自由移动
来源:互联网 发布:巅峰乔丹身体数据 编辑:程序博客网 时间:2024/04/27 22:14
import javax.microedition.lcdui.*;
public class Guomu extends Canvas implements Runnable
{
private final int width= 128;
private final int height= 128;
private Image ditu,renwu;
public Guomu(){
try{
ditu=Image.createImage("/ditu.png");
renwu=Image.createImage("/renwu.png");
}catch(java.io.IOException e){}
init();}
private final void init(){
x=0;
y=0;
position_x=0;
position_y=0; }
//////////////////////////////////
private static int x,y;
private final int Map_w=256;
private final int Map_h=256;
private final int d=5;
//////////////////////////////
private final void move_to(int x1,int y1,int x2,int y2){
int i=x1-x2;
int j=y1-y2;
int max =Math.abs(i)>=Math.abs(j)?Math.abs(i):Math.abs(j);
int pingshu=max/d+1;
move( i/pingshu,j/pingshu,pingshu);
}
///////////////////////////////
private static long oldtime=0;
private final int jiange=50;
private static int m;
private final void move(int a,int b,int c){
this.m=c;
if(m<=0) return;
long newtime =System.currentTimeMillis();
if(newtime>=(oldtime+jiange)){
oldtime=System.currentTimeMillis();
m--;
do_move(a,b);
repaint();
move(a,b,m);}
}
//////////////////////////////
private static int position_x;
private static int position_y;
private final void do_move(int a,int b){
if((x+position_x)>=0&&(x+position_x)<=102&&position_x<=0&&position_x>=(128-Map_w)&&a<=0)
{
if((x+position_x)<52&&position_x==0)
x-=a;
else if
(position_x==(128-Map_w))
x-=a;
else
{position_x+=a;
x-=a;}
}
if((x+position_x)>=0&&(x+position_x)<=102&&position_x<=0&&position_x>=(128-Map_w)&&a>0)
{
if((x+position_x)>52&&position_x==(128-Map_w))
x-=a;
else if
(position_x==0)
x-=a;
else
{position_x+=a;
x-=a;}
}
if((y+position_y)>=0&&(y+position_y)<=102&&position_y<=0&&position_y>=(128-Map_h)&&b<=0)
{
if((y+position_y)<52&&position_y==0)
y-=b;
else if
(position_y==(128-Map_h))
y-=b;
else
{position_y+=b;
y-=b;}
}
if((y+position_y)>=0&&(y+position_y)<=102&&position_y<=0&&position_y>=(128-Map_h)&&b>0)
{
if((y+position_y)>52&&position_y==(128-Map_h))
y-=b;
else if
(position_y==0)
y-=b;
else
{position_y+=b;
y-=b;}
}
}
///////////////////////////////////
public void paint(Graphics g){
g.setColor(0xffffffff);
g.fillRect(0,0,width,height);
g.setClip(0,0,width,height);
g.drawImage(ditu,position_x,position_y,0);
g.drawImage(renwu,x+position_x,y+position_y,0);
g.setColor(0x000000);
// int[] polygonX={30,50,30,10};
// int[] polygonY={10,30,50,30};
// DirectGraphics dg=DirectUtils.getDirectGraphics(g);
// dg.drawPolygon(polygonX,0,polygonY,0,polygonX.length,0);
/* g.drawString(String.valueOf(x),0,0,0);
g.drawString(String.valueOf(y),20,0,0);
g.drawString(String.valueOf(position_x),40,0,0);
g.drawString(String.valueOf(position_y),60,0,0);
g.drawString(String.valueOf(x),1,1,0);
g.drawString(String.valueOf(y),21,1,0);
g.drawString(String.valueOf(position_x),41,1,0);
g.drawString(String.valueOf(position_y),61,1,0);
*/
}
protected void keyPressed(int k){
if(k==53)
new Thread(this).start();
if(k==50)
t=1;
if(k==52)
t=2;
if(k==54)
t=3;
}
private static int t=0;
private final boolean kaishi=true;
public void run(){
while(kaishi){
try{
switch(t){
case 1: move_to(x,y,230,230);
case 2: move_to(x,y,230,0);
case 3: move_to(x,y,0,230);}
Thread.sleep(100);
} catch(Exception e){}
} }
}
- 自由移动
- 自由移动方向键
- 移动端自由移动元素位置
- 数据库返回记录需要自由移动
- vs2005中控件自由移动问题
- C#实现treeview节点上下左右自由移动
- C#实现treeview节点上下左右自由移动
- 无边框图片背景窗体自由移动
- Delphi实现窗体控件自由移动
- Android悬浮窗自由移动实现
- 4.4 自由移动的Toast效果
- Android悬浮窗自由移动实现
- Android 气泡自由移动和漩涡
- 图片的缩、放与自由移动
- android 实现自由移动的悬浮按钮
- 310_自由缩放移动的ImageView
- 自定义可自由移动的浮窗
- 飞翔的小球,小球自由移动
- 向冬天投降
- 诸葛亮与鲁肃
- 程序员模式
- const(部分)
- Linux进程管理
- 自由移动
- Testing
- 正则表达式
- MySQL查找的方式与索引的效率
- C++程序设计之四书五经
- LinkedHashSet
- Template Method模式的一个例子
- EnumSet
- 珍珠博客