⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 testcanvas.java

📁 用j2me midp1.0,原码正宗
💻 JAVA
字号:
import javax.microedition.lcdui.*;
import java.io.*;


public class TestCanvas extends Canvas implements Runnable {

    static final int WIDTH = 240, HEIGHT = 289;
    static final int KEY_UP = -1;
    static final int KEY_DOWN = -2;
    static final int KEY_LEFT = -3;
    static final int KEY_RIGHT = -4;
    static final int KEY_MIDDLE = -5;
    static final int SOFTKEY_LEFT = -6;
    static final int SOFTKEY_RIGHT = -7;

    TestJ2ME midlet;
    Display display;
    long time0, time1, timePassed;
    int RUN_RATE = 50;
    
    Image ken,transparentKen;
    PalettedImage blueKen;
    int[] originalArgb;//原argb数组
    int[] argb;//存放图片的argb数组
    int curAlpha;//当前alpha值
    boolean flag;
    
    
    TestCanvas(TestJ2ME m) {
        midlet = m;
        display = m.display;
        display.setCurrent(this);
        init();
        new Thread(this).start();
    }

    private void init() {
        try {
            ken=Image.createImage("/ken.png");
        }
        catch (IOException e) {
            e.printStackTrace();
        }
        originalArgb=new int[ken.getWidth()*ken.getHeight()];
        argb=new int[ken.getWidth()*ken.getHeight()];
        ken.getRGB(originalArgb,0,ken.getWidth(),0,0,ken.getWidth(),ken.getHeight());
        try {
            blueKen=PalettedImage.createPalettedImage("/ken.png");
        }
        catch (IOException e) {
            e.printStackTrace();
        }
        transparentKen=Image.createRGBImage(originalArgb,ken.getWidth(),ken.getHeight(),true);
//        printByteArray(originalArgb);
    }

    private void changeAlphaChannel(){//改变图片的alpha通道值
    	
    	System.out.println("alpha="+Integer.toHexString(curAlpha));
    	for(int i=0;i<argb.length;i++){
    		if((originalArgb[i]&0xff000000)!=0){//原本不是完全透明
    			argb[i]=originalArgb[i]&(curAlpha+0xffffff);
    		}
        }
//    	printByteArray(argb);
        transparentKen=Image.createRGBImage(argb,ken.getWidth(),ken.getHeight(),true);
    }
    
    protected void paint(Graphics g) {
    	g.setColor(0xffffff);
    	g.fillRect(0,0,WIDTH,HEIGHT);
    	g.drawImage(blueKen.getImage(), WIDTH/2, HEIGHT/2, Graphics.HCENTER|Graphics.VCENTER);
    	g.drawImage(transparentKen, WIDTH/2, HEIGHT/2, Graphics.LEFT|Graphics.TOP);
    }

    public void run() {
        time0 = System.currentTimeMillis();
        while (true) {
            time1 = System.currentTimeMillis();
            timePassed = time1 - time0;
            time0 = time1;
            
            curAlpha+=0x4000000;//每次循环变化alpha通道值
            changeAlphaChannel();
            
            repaint();
            serviceRepaints();
            time1 = System.currentTimeMillis();
            if (time1 - time0 < RUN_RATE) {
                try {
                    Thread.sleep(RUN_RATE - (time1 - time0));
                }
                catch (InterruptedException e) {
                }
            }
        }
    }

    public void keyPressed(int keyCode) {
    	
        if(keyCode==KEY_NUM5){
            flag=!flag;
            System.out.println(keyCode);
            if(flag){
                blueKen.replaceColor(0xf44000,0x666688);
                blueKen.replaceColor(0xFF4400,0x555577);
                blueKen.replaceColor(0xD40000,0x446666);
                blueKen.replaceColor(0xb40000,0x333355);
                blueKen.replaceColor(0x940000,0x222244);
                blueKen.replaceColor(0x700000,0x111122);
            }
            else{
                blueKen.replaceColor(0x666688,0xf44000);
                blueKen.replaceColor(0x555577,0xFF4400);
                blueKen.replaceColor(0x446666,0xD40000);
                blueKen.replaceColor(0x333355,0xb40000);
                blueKen.replaceColor(0x222244,0x940000);
                blueKen.replaceColor(0x111122,0x700000);
            }
        }
    }
    private static void printByteArray(int[] ia){
    	System.out.println("---------------");
        for(int i=0;i<ia.length;i++){
            System.out.print(Integer.toHexString(ia[i]));
            System.out.print(",");
        }
        System.out.println();
        System.out.println("===============");
    }
    
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -