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

我最近在写一个J2ME贪吃蛇的程序,1.想在开始界面放一张图片如图:我的代码是这样的:在classSplashScreenextendsCanvasimplementsR... 我最近在写一个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();
展开
 我来答
HammerC
2010-07-26 · TA获得超过190个赞
知道小有建树答主
回答量:102
采纳率:0%
帮助的人:0
展开全部
SplashScreen 类继承 Runnable 必须要实现 run() 方法,run 方法里循环调用 Paint 函数实现更新绘制,再在 Paint 里绘制图片即可,脚本如下:

class SplashScreen extends Canvas implements Runnable {
……(表示省略代码)

public boolean game_pause = true; //记录游戏是否暂停

SplashScreen( SnakeMIDlet midlet)
{
this.midlet = midlet;
imgSplash = SnakeMIDlet.createImage("/splash.png");

new Thread(this).start();
}
//实现间隔 40 毫秒循环运行
public void run(){
while(game_pause){
Paint(); //绘图函数
sleep(40);
}
}

//绘图函数
public void Paint(){
Graphics g = fetGraphics();

//绘制图片 imgSplash 需为全局对象
g.drawImage(imgSplash,0,0,0);

flushGraphics();
}

……
}

至于音乐没看出是哪儿出错了,播放一个音乐的最简单格式是:

try{
InputStream is = getClass().getResourceAsStream("/firstblood.au");
Player p = Manager.createPlayer(is, "audio/basic");
p.start();
}catch (IOException ioe)
{
System.out.println("Error creating inputstream" + filename);
}catch (MediaException me)
{
me.printStackTrace();
}
PalmArt
2010-07-18
知道答主
回答量:4
采纳率:0%
帮助的人:3.6万
展开全部
第一个问题,有几种可能:
一种是你没有在线程中使用repaint()方法重绘;
一种是你在其他地方用过setclip()方法,导致没有在正常地方显示图片;
一种是你用了双缓冲,缓冲层的Graphics使用错误;
也可能是其他,这是几种常犯的错误。

第二个问题,你只要在Player初始化后,直接调用start()方法就可以正常播放了啊。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友5aaec0752
2010-07-17 · 超过18用户采纳过TA的回答
知道答主
回答量:96
采纳率:0%
帮助的人:0
展开全部
paint()方法,和run()方法呢?
IllegalArgumentException--参数非法,format的值是什么?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
蓝梦34
2010-07-26 · TA获得超过597个赞
知道小有建树答主
回答量:785
采纳率:0%
帮助的人:560万
展开全部
把图片放到res文件夹下面,不要放到src文件夹下
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式