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

📄 walker.java

📁 递归子程序法:对应每个非终结符语法单元编一个独立的处理过程(或子程序)。语法分析从读入第一个单词开始
💻 JAVA
字号:
	/** 
	 * Java语言实验参考程序
	 * Company 北京师范大学计算机系 
	 * @author 孙一林
	 * @version 1.0
	 */
	import java.awt.MediaTracker;
	import java.awt.Graphics;
	import java.awt.Image;
	public class Walker extends java.applet.Applet implements Runnable{
		Image offScreenImg;					// 声明备用屏幕类型
		Graphics offScreenG;				// 声明备用屏幕绘图类型
		MediaTracker tracker;				// 声明媒体跟踪器
		Image walkerImgs[] = new Image[5];	// 存放动画图像组
		Image currentImg;					// 当前放映的动画图像
		int xpos,ypos = 0;					// 动画图像显示的位置
		int walk_step = 20;					// 动画图像每次移动的距离
		int delay = 250;					// 每帧时延(毫秒)
		Thread runThread;
		Image bgImage;						// 存放背景图像
		int applet_width,applet_height;
		int birdImg_width;					// 动画图像宽度
		public void init() {
			tracker = new MediaTracker(this);
			for ( int i = 0;i < walkerImgs.length;i++ ){// 获取动画图像组数据
			  walkerImgs[i] = getImage(this.getCodeBase(),"images/bird"+i+".gif");
			  tracker.addImage( walkerImgs[i], 0 );	// 列入0组跟踪范围
			}
			bgImage = getImage(this.getCodeBase(),"images/"+"bg.gif");
											// 获取背景图像数据
			tracker.addImage( bgImage, 0 );	// 列入0组跟踪范围
			applet_width = size().width;	// 获取程序显示区宽度
			applet_height = size().height;	// 获取程序显示区高度
			try {
			  offScreenImg = createImage ( applet_width,applet_height );
											// 创建备用屏幕
			  offScreenG = offScreenImg.getGraphics ();
											// 获取备用屏幕的绘图环境
			}
			catch ( Exception e ) {
			  offScreenG = null;	// 出错设置备用屏幕的绘图环境为null
			}
		}
		public void start () {
			if ( runThread == null ) {
				runThread=new Thread(this);
				runThread.start();
			}
		}
		public void stop() {
			if ( runThread != null ) {
				runThread.stop();
				runThread=null;
			}
		}
		public void run() {
			try{
			  tracker.waitForID(0);				// 等待0组中所有图像的到达
			}
			catch( InterruptedException e ){
				return;
			}
			birdImg_width = walkerImgs[0].getWidth(this);
			int i = 0;
			while(true) {
			  for(xpos = -birdImg_width;xpos<=applet_width;xpos+=walk_step) {
													// 计算图像显示位置
				currentImg = walkerImgs[i];
				repaint();
				i = (i + 1 ) % walkerImgs.length;	// 计算下一帧是哪幅图像
				try{ Thread.sleep(delay); }
				catch( InterruptedException e ){}
			  }		// end for
			}		// end while
		}
		public void paint( Graphics g ) {
			g.drawImage( bgImage,0,0,this );			// 显示背景图像
			g.drawImage( currentImg,xpos,ypos,this ); 	// 显示前景图像
		}
		public void update( Graphics g ){
			if ( offScreenG != null ) {				// 如果备用屏幕创建成功
				paint( offScreenG );
				g.drawImage( offScreenImg,0,0,this );
			}								// 将备用屏幕内容画到当前屏幕上
			else
				paint(g);					// 直接将图像内容画到当前屏幕上
		}
	}

⌨️ 快捷键说明

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