新手问setCurrent()的问题
import javax.microedition.midlet.*;import javax.microedition.lcdui.*;
public class Sky extends MIDlet implements CommandListener {
public Form f1,f2,f3;
public Command c1,c2,c3;
public Display d;
public Sky(){
c1 = new Command("进入游戏",Command.SCREEN,1);
c2 = new Command("游戏帮助",Command.SCREEN,2);
c3 = new Command("退出游戏",Command.SCREEN,3);
f1 = new Form("欢迎进入 恋空游戏");
f1.append("恋空%……");
f1.addCommand(c1);
f1.addCommand(c2);
f1.addCommand(c3);
f1.setCommandListener(this);
f2 = new Form("欢迎使用 恋空帮助");
f2.append("这是帮助!");
f2.addCommand(c1);
f2.addCommand(c3);
f2.setCommandListener(this);
f3 = new Form("恋空~~");
f3.append("游戏加载中……");
f3.addCommand(c2);
f3.addCommand(c3);
f3.setCommandListener(this);
d = Display.getDisplay(this);
}
public void startApp(){
d.setCurrent(f1);
}
public void pauseApp(){}
public void destroyApp(boolean f){}
public void commandAction(Command now, Displayable d){
if(now == c1)
d.setCurrent(f3);
if(now == c2)
d.setCurrent(f2);
if(now == c3)
this.notifyDestroyed();
}
}
红色部分在wtk中报错,不能通过编译
Project settings saved
Building "Test01"
C:\WTK25\apps\Test01\src\Sky.java:42: 找不到符号
符号: 方法 setCurrent(javax.microedition.lcdui.Form)
位置: 类 javax.microedition.lcdui.Displayable
d.setCurrent(f3);
^
C:\WTK25\apps\Test01\src\Sky.java:44: 找不到符号
符号: 方法 setCurrent(javax.microedition.lcdui.Form)
位置: 类 javax.microedition.lcdui.Displayable
d.setCurrent(f2);
^
2 错误
com.sun.kvem.ktools.ExecutionException
Build failed
若是删掉则通过编译,请问哪错了,为什么,十分感谢!
搜索更多相关的解决方案:
setCurrent
----------------解决方案--------------------------------------------------------
Java编写的啊,这个我看着就头晕
----------------解决方案--------------------------------------------------------
程序代码:
if(now == c1)
Display.getDisplay(this).setCurrent(f3);
else if(now == c2)
Display.getDisplay(this).setCurrent(f2);
else if(now == c3)
this.notifyDestroyed();
if与else应该比只有if运算速度快。Display.getDisplay(this).setCurrent(f3);
else if(now == c2)
Display.getDisplay(this).setCurrent(f2);
else if(now == c3)
this.notifyDestroyed();
设置屏幕对象要有获取当前屏幕语句,不知你的代码是谁教你的。。。
。我们非常的无语。。
----------------解决方案--------------------------------------------------------
回复 3楼 qq379264347
请问在此情况下if-else为何比if快呢,各个条件是相对独立的啊。另外,我的成员变量d = Display.getDisplay(this);
你根本没有找到问题所在啊
----------------解决方案--------------------------------------------------------
程序代码:
public void commandAction(Command now, Displayable d){
看到这里的参数了吗?有个d,不是用的你自定义的那个d。
所以下面的d也就不能引用而导致错误了。
----------------解决方案--------------------------------------------------------
感谢楼上!
----------------解决方案--------------------------------------------------------
呵呵,共同进步。
你那个我确实没看见,是手机UC回复你的。
不过现在解决了。
if-else语句我感觉比纯if要快,不过也差不了多少,毕竟if语句不多,你可以计算程序运行时间来比较会更明白,直接。看下class字节码也会明白一些,因为if-else种if语句最后是goto 标号;语句。
我记得是。。点出来,探讨下。
----------------解决方案--------------------------------------------------------