用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(); 展开
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(); 展开
展开全部
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();
}
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();
}
展开全部
第一个问题,有几种可能:
一种是你没有在线程中使用repaint()方法重绘;
一种是你在其他地方用过setclip()方法,导致没有在正常地方显示图片;
一种是你用了双缓冲,缓冲层的Graphics使用错误;
也可能是其他,这是几种常犯的错误。
第二个问题,你只要在Player初始化后,直接调用start()方法就可以正常播放了啊。
一种是你没有在线程中使用repaint()方法重绘;
一种是你在其他地方用过setclip()方法,导致没有在正常地方显示图片;
一种是你用了双缓冲,缓冲层的Graphics使用错误;
也可能是其他,这是几种常犯的错误。
第二个问题,你只要在Player初始化后,直接调用start()方法就可以正常播放了啊。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
paint()方法,和run()方法呢?
IllegalArgumentException--参数非法,format的值是什么?
IllegalArgumentException--参数非法,format的值是什么?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
把图片放到res文件夹下面,不要放到src文件夹下
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询