Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Java программирование > Общие вопросы по Java, Java SE, Kotlin
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 05.03.2011, 21:50   #1
RedScreenOfLife
Пользователь
 
Аватар для RedScreenOfLife
 
Регистрация: 12.07.2010
Сообщений: 45
Лампочка Взрыв лампочки

Проблема в том, что мне нужно сделать анимацию взрывающейся лампочки...по сути у меня получилась анимация, но не в ней дело...дело в том, что она повторяется 2 раза!

А анимацию делаю так: между перерисовкой я усыпляю поток и, скорее всего, в этом беда...подскажите пожалуйста - что не так?

Код:

Код:
class LightBulb
{
private int x, y;

public LightBulb(int x, int y){this.x=x; this.y=y;};

public void boom(Graphics g)
    {
   
      g.setColor(Color.red);
      g.fillOval(x, y, 100, 100);
      try{Thread.sleep(50);}
      catch(InterruptedException e){};
       g.setColor(Color.red);
      g.fillOval(x-50, y-30, 300, 300);
      try{Thread.sleep(50);}
      catch(InterruptedException e){};
      g.setColor(Color.red);
      g.fillOval(x-150, y-130, 500, 500);
      try{Thread.sleep(50);}
      catch(InterruptedException e){};

//А дальше идет прорисовка остатков лампочки


    }
}
public class Bulb extends Applet
{
@Override
    public void paint(Graphics g)
    {
    LightBulb lb = new LightBulb(80,20);
    lb.boom(g);
        
    }
}


ЗЫ: Среда разработки NetBeans 6.9.1

Последний раз редактировалось Stilet; 06.03.2011 в 12:06.
RedScreenOfLife вне форума Ответить с цитированием
Старый 06.03.2011, 09:15   #2
BleStaR
Форумчанин
 
Регистрация: 25.09.2009
Сообщений: 234
По умолчанию

дважды отрисовывается не из за усыпления потока, а из за метода Paint твоего аплета (метод Paint дважды срабатывает)
Добавь эту строку и увидешь.
Код:
public class Bulb extends Applet
{
@Override
public void paint(Graphics g)
{
LightBulb lb = new LightBulb(80,20);
lb.boom(g);
System.out.println("!!!");
}
}
BleStaR вне форума Ответить с цитированием
Старый 06.03.2011, 11:11   #3
RedScreenOfLife
Пользователь
 
Аватар для RedScreenOfLife
 
Регистрация: 12.07.2010
Сообщений: 45
По умолчанию

Действительно так...блин, и как же исправить это?
RedScreenOfLife вне форума Ответить с цитированием
Старый 07.03.2011, 09:30   #4
RedScreenOfLife
Пользователь
 
Аватар для RedScreenOfLife
 
Регистрация: 12.07.2010
Сообщений: 45
По умолчанию

что, никто ни разу анимацию не делал? что с этим paint'ом не так?
RedScreenOfLife вне форума Ответить с цитированием
Старый 30.03.2011, 16:30   #5
X@OC
Форумчанин
 
Аватар для X@OC
 
Регистрация: 18.06.2010
Сообщений: 273
Лампочка Взрыв лампочки

Добрый день RedScreenOfLife

Я предлагаю такой вариант

Код:
class LightBulb
{
private int x, y;
private static int ki=0;

public LightBulb(int x, int y){this.x=x; this.y=y;};

public void boom(Graphics g)
    {
	//Если ki меньше 0 то выполняем анимацию
	//В противном случаи выводит конечный результат(я все окрашиваю в белый) 
   if(ki<=0)
   {
      g.setColor(Color.red);
      g.fillOval(x, y, 100, 100);
      try{Thread.sleep(50);}
      catch(InterruptedException e){};
       g.setColor(Color.red);
      g.fillOval(x-50, y-30, 300, 300);
      try{Thread.sleep(50);}
      catch(InterruptedException e){};
      g.setColor(Color.red);
      g.fillOval(x-150, y-130, 500, 500);
      try{Thread.sleep(50);}
      catch(InterruptedException e){};
//А дальше идет прорисовка остатков лампочки
      //анимация закончина увеличиваем ki++
     ki++;
   }
   else
   {
	  g.setColor(Color.WHITE); 
   }


    }
}
public class Bulb extends Applet
{
@Override
    public void paint(Graphics g)
    {
    LightBulb lb = new LightBulb(80,20);
    lb.boom(g);
        System.out.println("III ");
    }

}

Последний раз редактировалось X@OC; 30.03.2011 в 19:52.
X@OC вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Взрыв в домодедово. Alex Cones Свободное общение 31 26.01.2011 19:11
Взрыв в метро Neymexa Свободное общение 96 04.04.2010 17:47
Интернет из лампочки.. CodeExpert Свободное общение 6 14.03.2010 19:14
Взрыв(DelphiX) Nazar1994 Gamedev - cоздание игр: Unity, OpenGL, DirectX 2 29.10.2009 22:55