import javax.microedition.lcdui.*; import javax.microedition.lcdui.game.*; import javax.microedition.media.*; import java.io.*; public class win extends Canvas{ public byte statwin = 2; public boolean painted = false; public PauseClass th = new PauseClass(); //Конструктор public win(){ setFullScreenMode(true); repaint(); } public void temp(){ //Ещё раз отрисовываем repaint(); } public void temp2(){ //Заставка нарисована, теперь можно и инициализироваться initwin(); PlayMusic("/login.mid",1); repaint(); } public void temp_end(){ repaint(); } public void temp2_end(){ PlayMusic("/logout.mid",1); th.sle(500); Main.midlet.destroyApp(true); } public void initwin(){ //Типо создание всего //Задержка полсекунды th.sle(500); } //paint public void paint(Graphics g) { if(statwin==1){ //Всё готово! заставка прошла, теперь рисуем } else { if(statwin==2){ if(painted==false){ //Если на экране ещё нету заставки try{ g.drawImage(resize_image(Image.createImage("/logo.png"),getWidth(),getHeight()),0,0,20); //Рисуем заставку } catch (Exception e){} //Вспомогательный метод painted = true; temp(); } else { //Заставка нарисована, переходим к задержке... statwin = 1; temp2(); } } if(statwin==3){ if(painted==false){ try{ g.drawImage(resize_image(Image.createImage("/logo.png"),getWidth(),getHeight()),0,0,20); } catch (Exception e){} painted = true; temp_end(); } else { statwin = 1; temp2_end(); } } } } public void ExitProgram(){ //Типо функция, которая показывает заставку выхода и выходит statwin = 3; painted = false; repaint(); } //******************************************************** //Функция для изменения размеров картинки public static Image resize_image(Image image, int i, int j) { int ai[] = new int[image.getWidth() * image.getHeight()]; image.getRGB(ai, 0, image.getWidth(), 0, 0, image.getWidth(), image.getHeight()); int ai1[] = reescalaArray(ai, image.getWidth(), image.getHeight(), i, j); Image image1 = Image.createRGBImage(ai1, i, j, true); return image1; } private static int[] reescalaArray(int ai[], int i, int j, int k, int l) { int ai1[] = new int[k * l]; for(int i1 = 0; i1 < l; i1++) { int j1 = (i1 * j) / l; for(int k1 = 0; k1 < k; k1++) { int l1 = (k1 * i) / k; ai1[k * i1 + k1] = ai[i * j1 + l1]; } } return ai1; } //******************************************************* //Функция для проигрывания звуков, count - сколько раз проиграть public void PlayMusic(String musicstr,int count){ try { playe = Manager.createPlayer(getClass().getResourceAsStream(musicstr), "audio/midi"); playe.realize(); playe.prefetch(); playe.setLoopCount(count); playe.start(); } catch (Exception ex){} } } //Дополнительный класс, который делает паузу public class PauseClass extends Thread{ public PauseClass(){} public void sle(int s){ try{Thread.sleep(s);} catch(InterruptedException e){} } }