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 Администратор Сейчас: Offline
Имя: 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)
|