怎样在程序开始加入一个LOGO展示

胖鸟不会飞 2008-02-25 11:39:17
先建立了一个工程,再建立了一个Canvas 类的 MIDP MIDlet 编好游戏程序后
想在进入程序的开始加一个展示LOGO的代码,延时显示LOGO几秒钟,然后开始游戏(是在哪个地方加啊??构造函数?paint()??)。试了好多次都不成功,哪个大侠指点一哈。谢谢。 是不是需要Thread.currentThread() .sleep(2000) ; 不知道在主线程中延时的用法是怎么用的
...全文
188 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
胖鸟不会飞 2008-02-28
  • 打赏
  • 举报
回复
哎还是没试出来 ~_~ 本以为会像MFC编程中的sleep()函数那样简单
算了 我已经改成了用按键响应的LOGO展示 prince58说的延时方法大概要建立多线程实现。。那个我基本就没怎么学
quan851 的Alert就更不清楚了 毕竟没什么基础 寒假才开始学的J2ME 之前连java也没学过 只会点c++ 不过能做出个
在我手机上运行的小游戏感觉已经很不错了
再深点的东西就以后有机会在学了 开学就要开始忙考研的事了
谢谢了 prince58 quan851
prince58 2008-02-27
  • 打赏
  • 举报
回复
楼上的用ALERT来显示LOGO,我不太清楚这个,不知道能不能显示图片吗?能不能显示动画?

用我上面的方法是可以显示动画的。
quan851 2008-02-27
  • 打赏
  • 举报
回复
先显示LOGO,然后就进入主程序显示。在MIDlet主类加个ALERT 对象就行了。
quan851 2008-02-27
  • 打赏
  • 举报
回复
使用Alert就可以了。
setTimeout(int time)。设置LOGO显示多少时间。单位是豪秒计算。
Display.setCurrent(Alert, Displayable)。
prince58 2008-02-26
  • 打赏
  • 举报
回复
public class Game extends Canvas implements Runnable

static int _state = 0;
static int _counter;

public Game() { //这是Canvas 类的 构造函数
setFullScreenMode(true); //全屏函数
jbInit();//初始化参数
}

public void run()

 _state = 0;//这里自己设,这里我假设0是初始化,9是退出游戏,1到8是游戏的某个状态
 _counter = 0; //付初值

while (_state != 9)

try {
repaint();
serviceRepaints();
Thread.sleep(50);
} catch (InterruptedException e) {
}

 }
//在这里destroyApp();


public void paint(Graphics g)


switch (_state)

case 0: Init_Update(); break; //初始化游戏
case 1: 和1状态相应的功能; break;
....
case 9: 退出游戏;break;




private static void Init_Update()

if(_counter == 0)
{
try
{
logo = Image.createImage("/logo.png");
}
catch (Exception ex)
{
}
}

if (_counter >0){
_g.setColor(0x00000000);
_g.fillRect(0, 0, 屏幕宽, 屏幕高);
_g.drawImage(logo,屏幕宽>>1, 屏幕高>>1,Graphics.HCENTER|Graphics.VCENTER); //将LOGO画到屏幕中间

}
_counter++;

if (_counter == 15 )
{
logo = null;
_counter = 0;
_state = 1; //当_counter==15时转到下一个状态
}


。。。。。。



这样够清楚了吧,再不行就好好补习一下基础了,呵呵。
prince58 2008-02-25
  • 打赏
  • 举报
回复
大概的意思就是这样,你可以自己实现。
prince58 2008-02-25
  • 打赏
  • 举报
回复
sleep(50)

50 - 80 就可以了

然后在paint()函数初始化的时候画LOGO,

可以这样做:

protected void paint ( Graphics g )
{
.....
switch ( m_gameStatus )
{
case GAME_STATE_LOGO:
if (count<15) //如查觉得LOGO显示的时间短了,就把15调大些
{
//画LOGO
count++;
}
break;
case:
......

}
}
胖鸟不会飞 2008-02-25
  • 打赏
  • 举报
回复
switch ( m_gameStatus )
{
case GAME_STATE_LOGO:
......

这是自己定义的么??用来判断条件进行不同的绘图? 我后面用的是if句来判断的,所以就没用你的SWITCH ,该成下面这样,但还是没反应,直接进入了后面的绘图程序。

public Game() { //这是Canvas 类的 构造函数
setFullScreenMode(true); //全屏函数
try {
logo = Image.createImage("/logo.png");
Images.init();//初始化图片常量
jbInit();//初始化参数
Thread.currentThread() .sleep(50) ;
}
catch(Exception e) {
e.printStackTrace();
}
}

protected void paint(Graphics g) { //这是paint的前面的绘图函数


if (count < 15) { //如查觉得LOGO显示的时间短了,就把15调大些
//画LOGO

g.drawImage(logo, 0,0,Graphics.TOP | Graphics.LEFT);


count++;
}

怎么这个绘图函数绘不出图???该怎么改

13,100

社区成员

发帖
与我相关
我的任务
社区描述
Java J2ME
社区管理员
  • J2ME社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧