问题出在那里?

marsmjx 2006-02-26 03:51:01
我的精灵是一张18针图片组成的,我想法是 当我按下左的时候 他就读去向左走的针并且精灵实现移动 当我按下右的时候他就读去向右走的针 现在的问题是 我按下左 精灵是移动的 但是针只读向左的第一针 而不会nextFrame 按右也是一样 一直觉得我的方法和思路完全就是错的 高手赐教

代码如下:

public class GameMidiel extends MIDlet {
Display dis;
MenuCanvas mc;
public GameMidiel() {
dis=Display.getDisplay(this);
}
protected void startApp() throws MIDletStateChangeException {
mc=new MenuCanvas();
new Thread(mc).start();
dis.setCurrent(mc);
}
protected void pauseApp() {
}
protected void destroyApp(boolean arg0) throws MIDletStateChangeException {
}
}
class MenuCanvas extends GameCanvas implements Runnable{

private Graphics g;
private LayerManager lm;
private TiledLayer ly;
private Image;
private Sprite mn;
int []right={0,1,2,3,4,5,6,7};
int []left={9,10,11,12,13,14,15,16};
protected MenuCanvas() {
super(true);
g = getGraphics();
try {
img=Image.createImage("/mnb.png");
} catch (IOException e) {
// TODO 自动生成 catch 块
e.printStackTrace();
}
mn=new Sprite(img,80,90);
mn.move(130,100);
mn.setFrame(17);
lm = new LayerManager();
lm.append(mn);
lm.paint(g,0,0);
flushGraphics();
}
public void input()
{
int key=getKeyStates();
if((key&LEFT_PRESSED)!=0)
{
left();
mn.move(-2,0);
mn.nextFrame();
}
if((key&RIGHT_PRESSED)!=0)
{
right();
mn.move(2,0);
mn.nextFrame();
}
}
public void left()
{
g.setColor(255,255,255);
g.fillRect(0,0,getWidth(),getHeight());
mn.setFrameSequence(left);
lm.paint(g,0,0);
flushGraphics();
}
public void right()
{
g.setColor(255,255,255);
g.fillRect(0,0,getWidth(),getHeight());
mn.setFrameSequence(right);
lm.paint(g,0,0);
flushGraphics();
}
public void run() {

while(true)
{
try {
Thread.sleep(80);
} catch (InterruptedException e) {
// TODO 自动生成 catch 块
e.printStackTrace();
}
input();
}
}
}



...全文
53 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

13,100

社区成员

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

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