用eclipse建立的J2ME工程怎么显示出图片

[复制链接]
查看11 | 回复4 | 2010-7-26 23:52:27 | 显示全部楼层 |阅读模式
我最近在写一个J2ME贪吃蛇的程序,
1.想在开始界面放一张图片
如图:
我的代码是这样的:
在class SplashScreen
extends Canvas
implements Runnable {

……(表示省略代码)

SplashScreen( SnakeMIDlet midlet)

{

this.midlet = midlet;

imgSplash =SnakeMIDlet.createImage("/splash.png");

new Thread(this).start();

}



……
}
然后在SnakeMIDlet里面这样写的
public void startApp() {



Display.getDisplay(this).setCurrent(new SplashScreen(this));



}
我用的是WTK2.5.2里面DefaultColorPhone模拟的……运行后显示空白没有图片,用其他模拟器也一样的……
2.第二个问题是音乐,
我想的是蛇吃掉第一个方块的时候能有“firstblood”的声音,声音文件是MP3格式的,发现蛇一吃到第一个方块程序就卡住不继续运行了,我有换了几种格式的声音均不行……我觉得是代码的问题
这段代码是copy已经能运行无误的一个J2ME工程,
private Player createPlayer(String filename, String format)

{

Player p = null;

try

{
//getClass().

InputStream is = getClass().getResourceAsStream(filename);



p = Manager.createPlayer(is, format);

p.realize();//我用过p.prefetch();也不行

}

catch (IOException ioe)

{

System.out.println("Error creating inputstream" + filename);

}

catch (MediaException me)

{

System.out.println("不支持的文件格式" + filename);

}

return p;

}
在线等解决方案!急~!!图片显示和音乐播放!!
java.lang.IllegalArgumentException

at javax.microedition.media.Manager.createPlayer(+11)
运行是有一个这个异常
这个函数是调用播放firstblood的函数
public void playfirstblood()

{

godlike = null;

BKB = null;

firstblood = createPlayer("/firstblood.au", "audio/basic");

startPlayer(firstblood);

}
这个是其中的startPlayer()函数
private void startPlayer(Player p)

{

if (p != null)

{

try

{

p.stop();

p.setMediaTime(0L);

p.setLoopCount(1);

p.start();

}

catch (MediaException me)

{

me.printStackTrace();

回复

使用道具 举报

千问 | 2010-7-26 23:52:27 | 显示全部楼层
SplashScreen 类继承 Runnable 必须要实现 run() 方法,run 方法里循环调用 Paint 函数实现更新绘制,再在 Paint 里绘制图片即可,脚本如下:class SplashScreen
extends Canvas
implements Runnable {
……(表示省略代码)
public boolean game_pause = true;//记录游戏是否暂停
SplashScreen( SnakeMIDlet midlet)
{
this.midlet = midlet;
imgSplash
回复

使用道具 举报

千问 | 2010-7-26 23:52:27 | 显示全部楼层
第一个问题,有几种可能:一种是你没有在线程中使用repaint()方法重绘;一种是你在其他地方用过setclip()方法,导致没有在正常地方显示图片;一种是你用了双缓冲,缓冲层的Graphics使用错误;也可能是其他,这是几种常犯的错误。第二个问题,你只要在Player初始化后,直接调用start()方法就可以正常播放了啊。
回复

使用道具 举报

千问 | 2010-7-26 23:52:27 | 显示全部楼层
paint()方法,和run()方法呢?IllegalArgumentException--参数非法,format的值是什么?
回复

使用道具 举报

千问 | 2010-7-26 23:52:27 | 显示全部楼层
把图片放到res文件夹下面,不要放到src文件夹下
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行