Модераторы: javastic, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Про Canvas 
:(
    Опции темы
MegaBitz
  Дата 16.8.2009, 15:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 20
Регистрация: 12.7.2009

Репутация: нет
Всего: нет



Есть такой код, в нем два Canvas'а после запуска его переходит в Canvas загрузки, а после загрузки переходит в Canvas главного меню, но в главном меню курсор подвисает на телефоне, а если убрать канвас загрузки то курсор не подвисает. Как избавится от этого подвисания не убирая загрузку? Или может как то можно закрывать канвас загрузки после того как загрузится?
Код

import javax.microedition.lcdui.*;
import javax.microedition.midlet.*;
import lib.Resources.ResourcesUTF8;


public class Test extends MIDlet implements CommandListener {
    
    public static Displayable lastDisplay;
    public static ResourcesUTF8 language;
    private boolean isLanguage;

    public static Display display;
   
    public Menu mainmenu = new Menu();
    public loading load = new loading();

    public Test() {

        display = Display.getDisplay(this);
        new Images();
        new Resources();
        language = new ResourcesUTF8 ("/language.dat");
        isLanguage = language.load();

    }

    public void startApp(){
          load.start();
          display.setCurrent(load);
          //Переходит в Canvas - загрузки
    }
    public void commandAction(Command cmd, Displayable disp) {
        //Обработчик комманд
    }

    public void pauseApp() {}

    public void destroyApp(boolean unconditional){}


//-------------------------------Главное меню--------------------------------//
    public class Menu extends Canvas
    {

    public Menu(){super();}
    public int index=0;
    private String act;
    private Font fnt;
    private FontClass MFont=new FontClass();
     public void paint(Graphics g)
    {
         int cwidth = g.getClipWidth()/2;
         int cheigh = g.getClipHeight()/2;


        setFullScreenMode(true);

        g.setColor(0x888888);
        g.fillRect(0, 0, g.getClipWidth(), g.getClipHeight());

        g.setColor(0xAAAABB);
        g.fillRect(cwidth-82, g.getClipHeight()/2-100, g.getClipWidth()/2+45, g.getClipHeight()/2+45);

        g.setColor(0x5555BB);
        g.fillRect(cwidth-82, cheigh-100, g.getClipWidth()/2+45, cheigh-135);

          g.setColor(0x0000FF);
          MFont.Init("TimesNewRoman10");
          MFont.setColor(255,255,10,40);
          MFont.drawString(g, "Меню", cwidth-25, cheigh-97);
          MFont.setColor(255,2,255,40);
          MFont.drawString(g, "Войти", cwidth-40, cheigh-75);
          MFont.drawString(g, "Регистрация", cwidth-40, cheigh-60);
          MFont.drawString(g, "Пригласить друга", cwidth-40, cheigh-45);
          MFont.drawString(g, "Настройки", cwidth-40, cheigh-30);
          MFont.drawString(g, "О программе", cwidth-40, cheigh-15);
          MFont.drawString(g, "Выход", cwidth-40, cheigh);


        g.setColor(0x0000FF);
        g.drawRect(cwidth-82,cheigh-76+index, g.getClipWidth()/2+45, 15);

     }
     protected void keyPressed(int key){

         if(key == KEY_NUM2 || getGameAction(key) == UP){
          if (index == 0){
              index = 90;
              repaint();}
          if (index != 0){
              index = index-15;
              repaint();}
         }
         else  if(key == KEY_NUM8 || getGameAction(key) == DOWN){

            if(index != 76){
                if(index == 75){index = -15;}
              index = index+15;
              repaint();}
          }
         else  if(key == KEY_NUM5 || getGameAction(key) == FIRE){
                switch(index){
                    case 0:
                      //Действие
                      break;
                    case 15:
                      //Действие
                      break;
                   case 30:
                      //Действие
                      break;
                    case 45:
                      //Действие
                        break;
                    case 60:
                      //Действие
                      break;
                    case 75:
                     //Действие
                      break;

                }
         }

     }
  }
//--------------------------------Загрузка-------------------------------------//
    public class loading extends Canvas implements Runnable{

        private int index=0;
        private Font font = Font.getFont(Font.FACE_SYSTEM, Font.STYLE_BOLD, Font.SIZE_LARGE);
        private FontClass MFont=new FontClass();
        public loading()
             {
               super();
             }

        public void run() {

            while(101 >= index){
            repaint();
            index++;
                try {
                    Thread.sleep(35);
                } catch (InterruptedException ex) {
                    ex.printStackTrace();
                }
            }

        }
          public void start()
        {
             Thread t = new Thread(this);
             t.start();
         }

       public void paint(Graphics g){
            int width = g.getClipWidth();
            int height = g.getClipHeight();

            MFont.Init("TimesNewRoman10");

            setFullScreenMode(true);

           if(index == 101){
               ChatCity.display.setCurrent(mainmenu);// После загрузки переходит в канвас главного меню
           }else{

                MFont.setColor(255,255,0,0);
               g.setColor(0x0000FF);
               g.fillRect(0, 0, width, height);
               MFont.drawString(g,"Загрузка", width/2-28, height-40);
               g.setColor(0xffffff);
               g.drawRect(width/2-51, height-25, width/2-17, 8);

               g.setColor(0xFF2200);
               g.fillRect(width/2-50, height-24, index, 7);

           }
       }

    }

}

PM MAIL   Вверх
mecid
Дата 16.8.2009, 16:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 58
Регистрация: 30.7.2009
Где: Baku

Репутация: нет
Всего: нет



правильнее использовать один canvas,а другое все реализовать через обычные классы
PM MAIL WWW ICQ Skype GTalk Jabber   Вверх
MegaBitz
Дата 16.8.2009, 21:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 20
Регистрация: 12.7.2009

Репутация: нет
Всего: нет



А можно ли как нибудь их закрывать?
PM MAIL   Вверх
MegaBitz
Дата 17.8.2009, 00:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 20
Регистрация: 12.7.2009

Репутация: нет
Всего: нет



Цитата

правильнее использовать один canvas,а другое все реализовать через обычные классы

Как это сделать? Я прост новичок.
PM MAIL   Вверх
W0LF
Дата 23.8.2009, 06:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


alexander lonsky
***


Профиль
Группа: Участник
Сообщений: 1164
Регистрация: 9.2.2006
Где: Ukraine.Dnepropet rovsk

Репутация: 19
Всего: 20



Дело как бы не в  "закрывании" канваса, главное чтоб поток рухнул, а там коллектор справится.
странно, что подвисает курсор, вообще не должен. Попробуйте сменить дисплей не в методе paint. я код привел ниже.
Попробуйте так сначала, а потом посмотрим, просто у меня сейчас мак - а на нем j2me поднимать не особо весело, поэтому могу только так, теоретически пока что..
И еще насчет setFullScreenMode - вроде как его не надо в цикле вызывать, достаточно в конструкторе, а потом еще метод
protected void sizeChanged(int newWidth, int newHeight) просто его имплементить в классе канваса.
Код

public class loading extends Canvas implements Runnable{
        ...
        public void run() {
            while(101 >= index){
            repaint();
            index++;
                try {
                    Thread.sleep(35);
                } catch (InterruptedException ex) {
                    ex.printStackTrace();
                }
            }
            ChatCity.display.setCurrent(mainmenu);// После загрузки переходит в канвас главного меню
        }
          public void start()
        {
             Thread t = new Thread(this);
             t.start();
         }
       public void paint(Graphics g){
            int width = g.getClipWidth();
            int height = g.getClipHeight();
            MFont.Init("TimesNewRoman10");
            setFullScreenMode(true);              
                MFont.setColor(255,255,0,0);
               g.setColor(0x0000FF);
               g.fillRect(0, 0, width, height);
               MFont.drawString(g,"Загрузка", width/2-28, height-40);
               g.setColor(0xffffff);
               g.drawRect(width/2-51, height-25, width/2-17, 8);
               g.setColor(0xFF2200);
               g.fillRect(width/2-50, height-24, index, 7);
       }
    }


Это сообщение отредактировал(а) W0LF - 23.8.2009, 06:24


--------------------
iOS developer
PM MAIL WWW Skype GTalk   Вверх
  
Ответ в темуСоздание новой темы Создание опроса

  • Прежде чем задать вопрос прочтите это!
  • Литература по Java находится здесь.
  • Литературу по Java обсуждаем здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит" (возле кнопок кодов) если у Вас нет русских шрифтов.
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда

  • FAQ раздела лежит здесь!
 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java ME (J2ME) | Следующая тема »


 




[ Время генерации скрипта: 0.0708 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.