关于MIDP1.0 setClip()手动切图并实现帧动画的问题?

penxm315 2008-11-05 01:53:37
各位大虾帮帮忙,怎样用setClip()来切图,及实现帧动画,我是新手,不是很会用这个函数。

而且很多地方不明白,主要是逻辑上,比如怎样切图后,实现帧动画。让他实现一个动画。

大家帮帮忙,靠各位了,在线等~~
...全文
115 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
bolou2008 2008-11-08
  • 打赏
  • 举报
回复
public class Player extends Canvas
{
Image player;

int player_x = 0;;
int player_y = 0;

int player_w = 16; //每格人物图象的宽
int player_h = 32; //每格人物图象的高

int player_dir = 0; //0为下,1为向左,2为向右,3为向上

int playerFrameIndex;//当前的贞

int player_speed = 3;

public Player()
{

try
{
player = Image.createImage("/player.png");
}
catch (IOException e)
{
e.printStackTrace();
}
Thread t = new Thread();
t.start();
}

public void paint(Graphics g)
{
g.setColor(255,255,255);
g.fillRect(0,0,getWidth(),getHeight());
g.setClip(player_x,player_y,player_w,player_h);
g.drawImage(player ,player_x - playerFrameIndex * player_w ,player_y - player_dir * player_h,20);
g.setClip(0,0,getWidth(),getHeight());
}

protected void keyPressed(int keyCode)
{
switch(keyCode)
{
case KeyMap.KEY_UP:
player_dir = 3;
updata();
player_y -= player_speed;
break;

case KeyMap.KEY_LEFT:
player_dir = 1;
updata();
player_x -= player_speed;
break;

case KeyMap.KEY_RIGHT:
player_dir = 2;
updata();
player_x += player_speed;
break;

case KeyMap.KEY_DOWN:
player_dir = 0;
updata();
player_y += player_speed;
break;
}
repaint();
}

void updata()
{
playerFrameIndex++;
playerFrameIndex %= 3;
}
}
LoginOut 2008-11-07
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 KGBKGB8888 的回复:]
3楼说的不对,绘制动画的时候绝对不能用for循环。

只能定义全局变量去控制绘制帧数。因为如果用for的话,程序瞬间走完循环,根本就看不出动画的效果。
[/Quote]

没看清楚题目,我还以为是画地图呢
prince58 2008-11-06
  • 打赏
  • 举报
回复
查API

WTK22/index.html

自己查三,装了WTK都有说明的。
KGBKGB8888 2008-11-06
  • 打赏
  • 举报
回复
3楼说的不对,绘制动画的时候绝对不能用for循环。

只能定义全局变量去控制绘制帧数。因为如果用for的话,程序瞬间走完循环,根本就看不出动画的效果。
LoginOut 2008-11-06
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 KGBKGB8888 的回复:]
其他的方法,就需要你写个绘制的方法,把绘制参数写到数组中,在绘制的时候根据帧数调用数组参数。
[/Quote]

定义一个二维数组,在用2个for循环
jlabel 2008-11-05
  • 打赏
  • 举报
回复
1楼说的对.
setClip()设置要绘制的区域大小然后就绘制
//绘制
KGBKGB8888 2008-11-05
  • 打赏
  • 举报
回复
有个最笨的方法,就是用switch-case,把每帧的切割方式,显示位置写出来。

其他的方法,就需要你写个绘制的方法,把绘制参数写到数组中,在绘制的时候根据帧数调用数组参数。

13,100

社区成员

发帖
与我相关
我的任务
社区描述
Java J2ME
社区管理员
  • J2ME社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧