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

📄 canvas_main.java

📁 midp2.0下低级canvas实现动态的百叶窗变化效果
💻 JAVA
字号:
import javax.microedition.lcdui.Canvas;
import javax.microedition.lcdui.Graphics;

public final class Canvas_Main extends Canvas{
//	屏幕宽高
	public static short SCREENW,SCREENH;
//	线程休眠时间
	public static final short THREADSLEEPTIME = 80;
//  自定义
	public static MIDlet_Main m_Midlet;
	public static boolean m_IsThreadRun = true;
	public static Thread m_Thread;
	public static int m_Cnt_Time;
	
//	动画播放的阶段标示,昨天功能实现不出来,多半是没加这个东西,挖哈哈~~
	public int ID_State;
	
	public Canvas_Main(MIDlet_Main midlet){
		setFullScreenMode(true);
		m_Midlet = midlet;
		initRes();
		
		m_Thread = new Thread(){
			public void run(){
				while(m_IsThreadRun){
					repaint();
					m_Cnt_Time++;
					try {
						sleep(THREADSLEEPTIME);
					} catch (InterruptedException e) {
						e.printStackTrace();
					}
				}
			}
		};
		m_Thread.start();
	}
	
	public final void initRes(){
		SCREENW = (short) getWidth();
		SCREENH = (short) getHeight();
	}
	
	public final void showNotify(){
		SCREENW = (short) getWidth();
		SCREENH = (short) getHeight();
	}
	
	public final boolean drawJalousie(Graphics g,int width,int height,int rowNum,int colNum,int RGB,int changeTime,boolean isOpen)
	{
		g.setColor(RGB);
		int cellMaxW = width/colNum;
		int cellMaxH = height/rowNum;
		int perHalfCellWidthchange = cellMaxW/(2*changeTime);
		int perHalfCellHeightchange = cellMaxH/(2*changeTime);
		if(perHalfCellWidthchange<1)
			perHalfCellWidthchange = 1;
		if(perHalfCellHeightchange<1)
			perHalfCellHeightchange = 1;
		int cellX = 0;
		int cellY = 0;
		int cellW = 0;
		int cellH = 0;
		if(isOpen)
		{
			cellX = cellMaxW/2-m_Cnt_Time*perHalfCellWidthchange;
			cellY = cellMaxH/2-m_Cnt_Time*perHalfCellHeightchange;
			cellW = 2*m_Cnt_Time*perHalfCellWidthchange;
			cellH = 2*m_Cnt_Time*perHalfCellHeightchange;
			if(cellX <= 0&&cellY <=0)
				return true;
		}else
		{
			cellX = m_Cnt_Time*perHalfCellWidthchange;
			cellY = m_Cnt_Time*perHalfCellHeightchange;
			cellW = cellMaxW-2*m_Cnt_Time*perHalfCellWidthchange;
			cellH = cellMaxH-2*m_Cnt_Time*perHalfCellHeightchange;
			if(cellW <= 0&&cellH <=0)
				return true;
		}
		for(int i=0;i<rowNum;i++)
			for(int j=0;j<colNum;j++)
			{
				g.fillRect(cellX+j*cellMaxW,cellY+i*cellMaxH,cellW,cellH);
			}
		return false;
	}
	
	public final void paint(Graphics g){
		g.setColor(0xFFFF00);
		g.fillRect(0,0,SCREENW,SCREENH);
		
		switch(ID_State)
		{
		case 0:
			m_Cnt_Time = 0;
			ID_State = 1;
			break;
		case 1:
			if(drawJalousie(g,SCREENW,SCREENH,12,9,0x000000,20,true)){
				ID_State = 2;
				m_Cnt_Time = 0;
				g.setColor(0x000000);
				g.fillRect(0,0,SCREENW,SCREENH);
			}
			break;
		case 2:
			if(drawJalousie(g,SCREENW,SCREENH,12,9,0x000000,20,false)){
				ID_State = 3;
			}
			break;
		}
	}
	
	
	
	

	
}









⌨️ 快捷键说明

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