实现游戏中的图片滚屏功能

王朝other·作者佚名  2006-01-10
窄屏简体版  字體: |||超大  

实现游戏中的文字滚屏功能一文中讲述了如何实现文字滚屏功能,在本文中我们将实现图片滚动的功能,其实现的原理是相似的,只不过图片的相对复杂一些。

首先我们应该预备一个大小适当的图片,目的是实现让他从屏幕底部滚动到屏幕的中间。这样的情况比较简单,我们不需要考虑双缓冲的问题。有的时候我们需要自己绘画图片,可能算发挥比较复杂,这时候就需要考虑双缓冲问题,为了得到更好的效果,避免闪屏,我们应该在后台画图然后把它copy到当前屏幕的适当位置,因为copy的速度是比你直接在当前屏幕画的速度快的。在Canvas类中提供了一个函数isDoubleBuffered(),假如返回true的话,那么表示设备支持双缓冲,那么我们就没有必要自己实现这个技术了。假如返回false那么我们就应该使用双缓冲技术。你可以参考应用双缓冲技术解决画面闪烁的问题 。

为了简单我们使用一个图片代替我们自己画的工作,这样我们没有使用双缓冲的可能了,因为只有通过指定width和height的空的图片才是可以修改的。像从jar文件中读取、从子节数组中创建的图片都是不可修改的。

下面是源代码

import javax.microedition.lcdui.Display;

import javax.microedition.lcdui.Form;

import javax.microedition.midlet.MIDlet;

import javax.microedition.midlet.MIDletStateChangeException;

public class GuessNumber extends MIDlet

{

PRivate Display display;

private WelcomeCanvas welcomeCanvas;

private Form mainForm;

protected void startApp() throws MIDletStateChangeException

{

initMIDlet();

}

private void initMIDlet()

{

display = Display.getDisplay(this);

mainForm = new Form("Guess Number");

mainForm.append("this is a game");

welcomeCanvas = new WelcomeCanvas(display,mainForm);

display.setCurrent(welcomeCanvas);

}

protected void pauseApp()

{

}

protected void destroyApp(boolean arg0) throws MIDletStateChangeException

{

}

}

public class WelcomeCanvas extends Canvas

{

private Display display;

private Displayable next;

private Timer timer = new Timer();

private int width = getWidth();

private int height = getHeight();

private int i = height;

private int left;

private int incHeight;

private Image image;

private boolean going = true;

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有  導航