黑马程序员技术交流社区
标题:
关于java游戏滚屏的问题!(如何实现)!
[打印本页]
作者:
王文杰
时间:
2011-12-31 16:34
标题:
关于java游戏滚屏的问题!(如何实现)!
本帖最后由 王文杰 于 2012-1-2 15:32 编辑
我在校时,毕业设计做了一个小游戏!其中的滚屏没有实现,我现在想将其完善!
求高手帮助!地图的物理层是用数组做的!!
注:谢谢各位!可能是我问的不够清楚!我的意思是地图的滚屏!(RPG小游戏)
作者:
马新乐
时间:
2011-12-31 23:51
在J2ME的高级的图形用户界面API中并没有提供类似滚屏的效果,因此我们需要自己通过Canvas类来实现,我们应该在Canvas类的paint()的方法中绘制我们要滚动的文字,基本代码如下所示:
PRotected void paint(Graphics arg0)
{
int oldColor = arg0.getColor();
arg0.setColor(255, 255, 255);
arg0.fillRect(0, 0, width, height);
arg0.setColor(oldColor);
arg0.drawString(welcome, left, i, Graphics.LEFT Graphics.TOP);
}
当我们初始化一个Canvas的子类的时候,paint()方法将被调用,我们需要它定时得往上滚动,因此我们可以借助Timer和TimerTask类,我们在TimerTask类中通过实现public void run()方法来对文字的y坐标减小一定的数值。当文字到达屏幕的中间的时候停止减少并停止timer。在这里我是实现了一个内部类,当然你也可以实现成匿名内部类。
private class ScrollTask extends TimerTask
{
public void run()
{
if (i > height / 2)
{
i = i - fontHeight;
repaint();
} else
{
going = false;
timer.cancel();
}
}
}
我们的WelcomeCanvas类扩展Canvas并实现它的paint()方法,在WelcomeCanvas的构造器中我们把display和下一个Displayable的对象传给他,并在其中完成一些具体尺寸的计算。
public WelcomeCanvas(Display display,Displayable disp) {
super();
Font font = Font.getDefaultFont();
left = (width - font.stringWidth(welcome))/2;
fontHeight = font.getHeight();
this.display = display;
this.next = disp;
ScrollTask st = new ScrollTask();
timer.schedule(st, 100, 100);
}
当文字滚动到中间后,用户可以通过按下任意键继续操作。因此我们需要keyPressed()方法,假如是触摸屏的话你可以用pointerPressed()方法实现。
public void keyPressed(int keyCode)
{
if(!going)
display.setCurrent(next);
}
作者:
李晓俊老师
时间:
2012-1-29 09:31
牛逼,羡慕,向你致敬,
作者:
yelong123
时间:
2012-11-8 13:16
跟着学习
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2