Java-программирование (1-ые посты)  2.05.2013 / 23:15 |  |  Misha    Пользователь  
   Сейчас: Offline 
 Имя: Миша Регистрация: 02.03.2012
   | [Rutar], сделай переменную которая покажет была ли отрисовка экрана, потом в paint рисуй картинку, в конце paint делай той переменной значение true, вызывай вспомогательный метод который будет делать задержку. после задержки вызывай repaint(); только не забудь сделать в paint: if(была_отрисовка==true){ заставка была, рисуем... } else { вызом метода } не уверен, но я так решил проблему с заставкой в Minwin     |  
   2.05.2013 / 23:29 |  |  Magatino    Администратор  
   Сейчас: Online 
 Имя: Alexandr Откуда: Где Ленин родился. Simbirsk City Регистрация: 28.01.2011
   | [Rutar],  Всё правильно делает JavaME, перед задержкой на 5 сек поставь repaint(); и в конце метода paint тоже repaint();    |  
   3.05.2013 / 10:45 |  |  NeiroNext    Пользователь  
   Сейчас: Offline 
 Имя: Михаил Откуда: Херсон Регистрация: 16.01.2010
   | [Rutar], Паузу лучше делай тредом, например:  ...  
try{  
 Thread.sleep(5000);  
} catch(Exception e){}  
 Так как ты делаеш сильно грузить будет.  Изменено NeiroNext (3.05 / 10:46) (всего 1 раз) |  
   3.05.2013 / 11:34 |  |  [Rutar]    Пользователь  
   Сейчас: Offline 
 Имя: Andriy Откуда: Львів Регистрация: 18.07.2011
   | Magatino, благодарю, но результата нет     Открыть спойлер Закрыть спойлер import javax.microedition.lcdui.*;  
   
public class MyClass extends Canvas {  
   
private Image image;   
   
///////////////////////////////////////////////////////////////////////////////  
///////////////////////////////////////////////////////////////////////////////  
   
public MyClass() {  
   
try { image = Image.createImage("/items.png"); }   
catch (Exception ex) {}  
   
}      
   
///////////////////////////////////////////////////////////////////////////////  
///////////////////////////////////////////////////////////////////////////////  
   
protected void paint(Graphics g) {  
   
int Width = this.getWidth();  
int Height = this.getHeight();      
   
g.setColor(0xffffff);  
g.fillRect(0, 0, Width, Height);  
   
///////////////////////////////////////////////////////////////////////////////  
   
g.drawImage(image, Width/2, Height/2, Graphics.HCENTER|Graphics.VCENTER);   
this.repaint();  
///////////////////////////////////////////////////////////////////////////////  
   
long lastTime = System.currentTimeMillis ();  
int dTime=0;  
while (dTime<5000) { long thisTime = System.currentTimeMillis ();  
                     dTime = (int)(thisTime-lastTime); }  
   
///////////////////////////////////////////////////////////////////////////////  
   
g.setColor(0xff00);  
g.drawString("String :)", 10, 10, 0);  
repaint();  
}  
   
///////////////////////////////////////////////////////////////////////////////  
   
}  
  |  
   3.05.2013 / 11:37 |  |  [Rutar]    Пользователь  
   Сейчас: Offline 
 Имя: Andriy Откуда: Львів Регистрация: 18.07.2011
   | NeiroNext, спасибо, но результат аналогичен     Открыть спойлер Закрыть спойлер import javax.microedition.lcdui.*;  
   
public class MyClass extends Canvas {  
   
private Image image;   
   
///////////////////////////////////////////////////////////////////////////////  
///////////////////////////////////////////////////////////////////////////////  
   
public MyClass() {  
   
try { image = Image.createImage("/items.png"); }   
catch (Exception ex) {}  
   
}      
   
///////////////////////////////////////////////////////////////////////////////  
///////////////////////////////////////////////////////////////////////////////  
   
protected void paint(Graphics g) {  
   
int Width = this.getWidth();  
int Height = this.getHeight();      
   
g.setColor(0xffffff);  
g.fillRect(0, 0, Width, Height);  
   
///////////////////////////////////////////////////////////////////////////////  
   
g.drawImage(image, Width/2, Height/2, Graphics.HCENTER|Graphics.VCENTER);   
this.repaint();  
///////////////////////////////////////////////////////////////////////////////  
   
try { Thread.sleep(5000); }  
catch (Exception e) {}  
   
///////////////////////////////////////////////////////////////////////////////  
   
g.setColor(0xff00);  
g.drawString("String :)", 10, 10, 0);  
repaint();  
}  
   
///////////////////////////////////////////////////////////////////////////////  
   
}  
  |  
   3.05.2013 / 11:40 |  |  [Rutar]    Пользователь  
   Сейчас: Offline 
 Имя: Andriy Откуда: Львів Регистрация: 18.07.2011
   | Misha, благодарю за помощь, но я не совсем понял твой метод, если не трудно дай пожалуйста свой исходник     |  
   3.05.2013 / 11:43 |  |  mrEDitor    Пользователь  
   Сейчас: Offline 
 Имя: Эдуард Откуда: Новороссийск » Таганрог Регистрация: 13.03.2011
   | Люди...  repaint() вызывает paint(): то есть ваш код делает вот что: protected void paint(Graphics g) {  
// Тут все ОК. Хотя высоту и ширину каждый раз получать необязательно  
int Width = this.getWidth();  
int Height = this.getHeight();      
g.setColor(0xffffff);  
g.fillRect(0, 0, Width, Height);  
g.drawImage(image, Width/2, Height/2, Graphics.HCENTER|Graphics.VCENTER);  
   
// Вот тут и началось...  
// Это все нужно выносить в отдельный поток (Thread)  
// public Void run() { ...  
this.repaint();  
long lastTime = System.currentTimeMillis ();  
int dTime=0;  
while (dTime<5000) {  
    long thisTime = System.currentTimeMillis ();  
    dTime = (int)(thisTime-lastTime);  
     // А где-то тут sleep  
}  
// Отрисовка, ОК  
g.setColor(0xff00);  
g.drawString("String ", 10, 10, 0);  
// НЕ ОК!  
repaint();  
}  
  The call to paint() occurs asynchronously of the call to repaint(). That is, repaint() will not block waiting for paint() to finish. The paint() method will either be called after the caller of repaint() returns to the implementation (if the caller is a callback) or on another thread entirely. Изменено mrEDitor (3.05 / 11:45) (всего 1 раз) |  
   3.05.2013 / 11:51 |  |  NeiroNext    Пользователь  
   Сейчас: Offline 
 Имя: Михаил Откуда: Херсон Регистрация: 16.01.2010
   | mrEDitor, Только что хотел об этом сказать, перерисовывать лучше в run(), хотя блин я чето тупое сморознул, вобщем если нужен именно такой подход то лучше GameCanvas использовать.
   Изменено NeiroNext (3.05 / 11:53) (всего 3 раза) |  
   3.05.2013 / 11:54 |  |  [Rutar]    Пользователь  
   Сейчас: Offline 
 Имя: Andriy Откуда: Львів Регистрация: 18.07.2011
   | mrEDitor, ты предлагаешь так ? Открыть спойлер Закрыть спойлер import javax.microedition.lcdui.*;  
   
public class MyClass extends Canvas {  
   
private Image image;   
   
///////////////////////////////////////////////////////////////////////////////  
///////////////////////////////////////////////////////////////////////////////  
   
public MyClass() {  
   
try { image = Image.createImage("/items.png"); }   
catch (Exception ex) {}  
   
}      
   
///////////////////////////////////////////////////////////////////////////////  
///////////////////////////////////////////////////////////////////////////////  
   
protected void paint(Graphics g) {  
   
int Width = this.getWidth();  
   
int Height = this.getHeight();      
   
g.setColor(0xffffff);  
   
g.fillRect(0, 0, Width, Height);  
   
g.drawImage(image, Width/2, Height/2, Graphics.HCENTER|Graphics.VCENTER);  
   
   
try { Thread.sleep(5000); }  
catch(Exception e) {}  
   
   
g.setColor(0xff00);  
   
g.drawString("String ", 10, 10, 0);  
   
   
   
   
}  
   
///////////////////////////////////////////////////////////////////////////////  
   
public void run() {  
   
this.repaint();  
   
}  
   
}  
 Так также не идет     |  
   3.05.2013 / 11:58 |  |  [Rutar]    Пользователь  
   Сейчас: Offline 
 Имя: Andriy Откуда: Львів Регистрация: 18.07.2011
   | NeiroNext, не люблю я GameCanvas, Canvas более простой и более удобный     |  
    Всего сообщений: 16875  Фильтровать сообщения
  Поиск по теме
  Файлы топика (794) 
                 |