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

📄 xcanvas.java

📁 MMAE1.0开发者版源代码 用于扩展java me移动开发引擎,这是1.0版的源码.
💻 JAVA
字号:
/**
*扩展Canvas类为XCanvas
*@CopyRight:Move2008
*@Author:bedlang
*@Version 1.0 2003/7/16
*/

package mmae.ui;

import javax.microedition.lcdui.*;
import com.nokia.mid.ui.FullCanvas;

public class XCanvas extends FullCanvas implements Runnable
{
	public static int left,top;		//绘图顶点
	public static int width,height;	//绘图长宽
	public static String STR_COPYRIGHT = "(c)2004 Move2008";	

	private Thread thread;
	private int interval;	
	private boolean killthread = true;
	private boolean stopthread = true;
		
	/**
	*构造函数,默认将left、top设为0,width设为getWidth(),height设为getHeight(),线程interval设为1000
	*/
	public XCanvas()
	{
		left = 0;
		top = 0;
		width = getWidth();
		height = getHeight();
		interval = 1000;
	}
		
	/**
	*特殊构造函数<br>
	*Left、Top:控件绘图顶点<br>
	*Width、Height:控件绘图长宽	
	*/	
	public XCanvas(int Left, int Top, int Width, int Height)
	{
		setRect(Left,Top,Width,Height);
	}	

	/**
	*设置顶点坐标
	*/	
	public void setPosition(int Left, int Top)
	{
		left = Left;
		top = Top;
	}
		
	/**
	*设置绘图区域
	*/
	public void setRect(int Left, int Top, int Width, int Height)
	{
		left = Left;
		top = Top;
		width = Width;
		height = Height;
	}
	
	/**
	*开发者在其它基于XCanvas的子类中重载此方法
	*/
	public void paint(Graphics g)
	{
		//super.paint(g);
	}
	
	/**
	*开发者在其它基于XCanvas的子类中重载此方法,它将随着线程循环而被XCanvas反复调用
	*/
	public void update()
	{
	}

	/**
	*XCanvas默认的线程方式,通过start方法可以启动它
	*/
	public void run(){
		if(interval==0)
		{
			update();
		}
		else
		{
			while(!killthread){
			while (!stopthread) {
	            try {
	            	thread.sleep(interval);
	            	if(killthread) return;
	              	update();
	            } 
	            catch (InterruptedException e) {
	            	System.out.println("XCanvas Thread Error:"+e.getMessage());
	            }
	        }
	        }
	    }
	    kill();
	}
	
	/**
	*XCanvas的线程启动,Interval为线程跳动的间隙时间,即每过Interval时间XCavans就会自动调用update方法
	*/		
	public void start(int Interval)
	{
		interval = Interval;
		killthread = false;
		stopthread = false;
		thread = new Thread(this);
		thread.start();			
	}
	
	/**
	*XCanvas的线程启动,这个方法调用后会启动update方法,调用一次后将自动调用kill方法释放线程
	*/
	public void start()
	{
		start(0);
	}
	
	/**
	*设置线程跳动的间隙时间
	*/		
	public void setInterval(int Interval)
	{
		interval = Interval;
	}

	/**
	*得到线程跳动的间隙时间
	*/	
	public int getInterval()
	{
		return interval;
	}
	
	/**
	*线程暂停
	*/	
	public void stop()
	{
		stopthread = true;
	}
	
	/**
	*线程休眠n毫秒
	*/
	public void sleep(int Time)
	{
		try
		{
			this.wait(Time);
		}
		catch(Exception e)
		{}
	}
	
	/**
	*销毁线程
	*/	
	public void kill()
	{	
		stopthread = true;
		killthread = true;
	}

	/**
	*线程恢复
	*/	
	public void resume()
	{
		stopthread = false;
	}

	/**
	*线程是否销毁
	*/		
	public boolean isKill()
	{
		return killthread;
	}

	/**
	*线程是否暂停
	*/			
	public boolean isStop()
	{
		return stopthread;
	}
}

⌨️ 快捷键说明

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