日期:2014-05-20  浏览次数:20670 次

canvas切换到form的按键问题。
我在一个canvas的按键里面构造了一个form类,并且display.setCurrent()这个form

但是同时form的commandAction()也执行了

会不会是因为canvas按键处理KeyPressed()中构造form时还没有返回

也就是说callKeyPressed()的操作还没完成,而form在构造中又setCurrent()了

使的callKeyPressed()又传递给form中的command,然后才返回c到anvas的KeyPressed()


//Canvas的按键处理部分-------------------------------------------

……………………

public   void   keyMenu()
  {
    switch(nCursor)
    {
      case   0:
        //System.out.println( "ok ");
        if(nState   ==   7)
        {
          nSub_state   =   1;
          nState_now   =   nSub_state;
          nState_next   =   nState_now;
          nScroll_y   =   0;
          nState   =   4;
          blnMenu   =   false;
          setCommands(cmdMenu,cmdNull);
        }
        else
        {
          http=new   Http(app,this);//构造包含form的类
        }
       
        break;
………………        


*************************************************************************************************************************************************************************


//form类构造器----------------------------------------------------

………………

  public   Http(Midlet   instance,
      //-----------------切换到Canvas界面
      Main   canvas//把Displayable替换成游戏的主Canvas
      //-------------------------------------------
  )   {
    form=new   Form( "开始游戏 ");
    this.instance=instance;
    this.canvas=canvas;
    display=Display.getDisplay(instance);
    out();
    display.setCurrent(form);
       
    form.setCommandListener(this);
  }
 
  private   void   out(){
    form.addCommand(com_login);
    form.addCommand(com_out);
    form.append(item_label);
    form.append(item);
  }
  …………

  public   void   commandAction(Command   comm,   Displayable   displayable)   {

………………


以上是主要代码。

麻烦了,谢谢!


------解决方案--------------------

http=new Http(app,this);//构造包含form的类
下面添加一个return试一下