3.05.2013 / 12:37 |  | 
[Rutar]    Пользователь  
   Сейчас: Offline 
 Имя: Andriy Откуда: Львів Регистрация: 18.07.2011
   | mrEDitor, изображение рисуетса, текст - нет     Открыть спойлер Закрыть спойлер public class MyClass extends Canvas {  
   
   
   
private Image image;  
   
/* Переменная состояния  
   
 * 0 = картинка  
   
 * 1 = текст  
   
 */  
   
private int state;  
   
   
   
public MyClass() {  
   
state = 0;  
   
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);  
   
   
   
// В зависимости от состояния, рисовать:  
   
switch (state) {  
   
   
   
case 0: // Сост. #0, картинка  
   
  g.drawImage(image, Width/2, Height/2, Graphics.HCENTER|Graphics.VCENTER);  
   
break;  
   
   
   
case 1: // Сост. #1, текст  
   
  g.setColor(0xff00);  
   
  g.drawString("String ", 10, 10, 0);  
   
break;  
   
   
   
}  
   
   
   
///////////////////////////////////////////////////////////////////////////////  
   
   
   
public void run() {  
   
   
   
// Пока состояние не станет максимальным (== 1)  
   
while (state <= 1) {  
   
  // Рисовать снова  
   
  this.repaint();  
   
  // Следующее состояние  
   
  state++;  
   
  // Ждать 5 сек  
   
  try { Thread.sleep(5000); }  
   
  catch(Exception e) {}  
   
}  
   
   
   
}  
   
}  
  | 
  3.05.2013 / 12:44 |  | 
Nokia_372Oc    Пользователь  
  | [Rutar],  А в чом суть данного приложения? Вывод изображения и замена его текстом, затем зациклить это?
   | 
  3.05.2013 / 12:47 |  | 
mrEDitor    Пользователь  
   Сейчас: Offline 
 Имя: Эдуард Откуда: Новороссийск » Таганрог Регистрация: 13.03.2011
   | [Rutar], все потому что 8 + 16 = 24, а не 0. Я ж писал, убери ноль в drawString. Поставь константы и не парься.
   | 
  3.05.2013 / 12:48 |  | 
[Rutar]    Пользователь  
   Сейчас: Offline 
 Имя: Andriy Откуда: Львів Регистрация: 18.07.2011
   | Nokia_372Oc, заменять изображение текстом не нужно, а вообще это заставка - через 5 секунд программа должна переходить в меню - текст я сделал для простоты
   | 
  3.05.2013 / 12:49 |  | 
[Rutar]    Пользователь  
   Сейчас: Offline 
 Имя: Andriy Откуда: Львів Регистрация: 18.07.2011
   | mrEDitor, а к чему здесь 0 - с константами то же будет
   | 
  3.05.2013 / 13:02 |  | 
Nokia_372Oc    Пользователь  
  | [Rutar],  Измени следующие участки кода на эти. Должно работать как надо. Я всдгда так делаю. /* Подключаем Ранебел содержащий в себе единственный метод  
run();  
*/  
   
public class MyClass extends Canvas implements Runable {  
   
//Твои переменные и т.д.  
   
   
public MyClass() {  
   
 /*  
 Создаём и запускаем наш Поток.  
 */  
   
 new Thread.this().start();  
   
}  
   
   
public void paint(Graphics g) {  
   
// Здесь repaint(); не надо.  
   
}  
   
   
 /*  
 А вот и наш метод  
run();  
 */  
   
public void run() {  
while(true) {  
   
if(переменная >= 1) {  
действие  
}  
   
   
repaint();  
   
try {  
Thread.sleep(20);  
}catch(Exception e) {}  
   
}}}  
  | 
  3.05.2013 / 13:07 |  | 
mrEDitor    Пользователь  
   Сейчас: Offline 
 Имя: Эдуард Откуда: Новороссийск » Таганрог Регистрация: 13.03.2011
   | Тьфу, насоветовал я, кто ж потоки запускать будет    в конец конструктора: new Thread(this).start();  
  в объявление класса: class MyClass extends Canvas implements Runnable  
  Изменено mrEDitor (3.05 / 13:08) (всего 2 раза) | 
  3.05.2013 / 13:10 |  | 
Nokia_372Oc    Пользователь  
  | mrEDitor,  У меня всегда этот код пашет. Именно так устроин процес перерисовки в моих приложениях. P.S. Прочитал твой ориджинал пост.    Изменено Nokia_372Oc (3.05 / 13:11) (всего 1 раз) | 
  3.05.2013 / 13:21 |  | 
NeiroNext    Пользователь  
   Сейчас: Offline 
 Имя: Михаил Откуда: Херсон Регистрация: 16.01.2010
   | mrEDitor, В конце конструктора его и нужно вызывать.
   | 
  3.05.2013 / 14:05 |  | 
DominaN    Пользователь  
   Сейчас: Offline 
 Имя: Кирилл Откуда: Смоленск Регистрация: 28.09.2011
   | Нужно вызывать не из конструкора а из собственноручно написанного менеджера потоков    Изменено DominaN (3.05 / 14:05) (всего 1 раз) |