手机上可移动的图片

main programm:ScrollScreen.java


import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;

public class ScrollScreen extends MIDlet
{
    
private Display dispaly=null;
    
public void startApp()
    
{
        
try
        
{
            dispaly
=Display.getDisplay(this);
            MainCanvas gameCanvas
=new MainCanvas(this);
            gameCanvas.start();
            dispaly.setCurrent(gameCanvas);
        }

        
catch(Exception ex)
        
{
            ex.printStackTrace();
            
        }

    }

    
    
public void pauseApp()
    
{
    }

    
    
public void destroyApp(boolean unconditional)
    
{
    }

    
public void exit()
    
{
        System.gc();
        destroyApp(
false);
        notifyDestroyed();
    }

}


Next Programm:MainCanvas.java
import javax.microedition.lcdui.*;
import javax.microedition.lcdui.game.*;


//注意这extends的是GameCanvas而不是Canvas
public class MainCanvas extends GameCanvas implements Runnable, CommandListener  
{
    
private ScrollScreen midlet = null;
    
private boolean isPlay;
    
private long delay; //线程休眠的时间间隔
    private int width; // 屏幕宽度
    private int height; //屏幕高度
    private int scnX, scnY; //可视窗口的左上角坐标
    
    Image backgroundImage;
    
private Sprite backgroundSprite;
    
private LayerManager layerManager;
    
    
public static final Command exitCommand = new Command("退出",Command.EXIT, 1);
    
public MainCanvas(ScrollScreen midlet)throws Exception
    
{
        
        
super(true);
        
this.midlet = midlet;
        width 
= getWidth();
        height 
= getHeight();
        scnX 
= 55;
        scnY 
= 20;
        delay 
= 20;
        backgroundImage 
= Image.createImage("/background.png");
        backgroundSprite 
= new Sprite(backgroundImage);
        layerManager 
= new LayerManager();
        layerManager.append(backgroundSprite);
        
this.addCommand(exitCommand);
        
this.setCommandListener(this);
      
    }

    
public void start()
    
{
        isPlay
=true;
        Thread t 
=new Thread(this);
        t.start();
    }

    
public void stop()
    
{
        isPlay
=false;
    }

    
public void run()
    
{
        Graphics g
=getGraphics();
        
while(isPlay==true)
        
{
            input();
            drawScreen(g);
            
try 
            
{
                Thread.sleep(delay);
            }

            
catch(InterruptedException ie)
            
{
                
            }

        }

    }

    
private void input()
    
{
        
int keyStates = getKeyStates();
        
if((keyStates&LEFT_PRESSED)!=0)
        
{
            
if(scnX-1>0)
            
{
                scnX
--;
            }

        }

            
else if ((keyStates&RIGHT_PRESSED)!=0)
            
{
                
if(scnX+1+140<backgroundImage.getWidth())
                
{
                    scnX
++;
                }

            }

            
else if((keyStates&UP_PRESSED)!=0)
            
{
                
if(scnY-1>0)
                
{
                    scnY
--;
                }

            }

            
else if((keyStates&DOWN_PRESSED)!=0)
            
{
                
if(scnY+1+140<backgroundImage.getHeight())
                
{
                    scnY
++;
                }

            }

      }

    
private void drawScreen(Graphics g)
    
{
        g.setColor(
0xffffff);
        g.fillRect(
0,0,getWidth(),getHeight());
        g.setColor(
0x0000ff);
        layerManager.setViewWindow(scnX,scnY,
140,140);
        layerManager.paint(g,
20,20);
        flushGraphics();
    }

    
public void commandAction(Command command, Displayable displayable)
    
{
        
if(command==exitCommand)
        
{
            stop();
            midlet.exit();
        }

    }

    
}


原文地址:https://www.cnblogs.com/Dreamfly/p/392039.html