Вниз  Java-программирование (1-ые посты)
- 28.09.2013 / 20:21
moDorks
  Пользователь

moDorks 
Сейчас: Offline
щас я понял надо исходник потерепить
- 28.09.2013 / 20:34
moDorks
  Пользователь

moDorks 
Сейчас: Offline
ааа блин все равно
- 28.09.2013 / 20:50
Misha
  Пользователь

Misha 
Сейчас: Offline
Naik, я конечно не знаю, но так у меня repaint вызывался только после завершения предыдущего и паузы 10мс)
ладно, попробую... спс всем)
- 28.09.2013 / 20:56
moDorks
  Пользователь

moDorks 
Сейчас: Offline
вот почему когда пишу код по исходнику вечно ошибка а как копирую с исходника все правельно?
- 28.09.2013 / 20:58
moDorks
  Пользователь

moDorks 
Сейчас: Offline
гггг и с исходника та же проблема :lol:
- 28.09.2013 / 21:05
moDorks
  Пользователь

moDorks 
Сейчас: Offline
что можно написать в методе getGraphics()?
я пишу :
  public void run() {
     Graphics g = getGraphics();
     while(!sleeping);
     update();
     draw(g);
     try {
     Thread.sleep(frameDelay);
     }
     catch(InterruptedException ie) {}
     }

мне говорит что getGraphics() метода нет и надо его реализовать( приетом в исходнике он не нужен) что делать ? :zloj: :zloj: задолбало
- 28.09.2013 / 21:10
aNNiMON
  Супервизор

aNNiMON 
Сейчас: Offline
moDorks, много оффтопишь, предупреждение.
getGraphics() работает в GameCanvas. В обычнос канвасе всё нужно вызывать в методе paint.
__________________
 let live
- 28.09.2013 / 21:13
moDorks
  Пользователь

moDorks 
Сейчас: Offline
/*
  * To change this template, choose Tools | Templates
  * and open the template in the editor.
  */
package ychenie;

import javax.microedition.lcdui.Canvas;
import javax.microedition.lcdui.game.*;
import java.util.*;
import java.io.*;

import javax.microedition.lcdui.Graphics;
import javax.microedition.lcdui.Display;
import javax.microedition.lcdui.Image;

public class KubCanvas extends Canvas implement Runnable {

private Display display;
private Sprite sprite;
private boolean sleeping;
private long frameDelay;
private Sprite kubSprite;


private int Xspeed,Yspeed;
     private int LEFT_PRESSED;
     private int RIGHT_PRESSED;
     private int DOWN_PRESSED;
     private int UP_PRESSED;






  /**
 
 
  * constructor
  */
  public KubCanvas(Display d) {
super();
display=d;
  frameDelay=33;
}
public void start() {
display.setCurrent(this);

Xspeed=Yspeed=0;
try {
kubSprite = new Sprite(Image.createImage("/kub.png"));
kubSprite.setPosition(0,0);
} catch (IOException e) {
System.out.println("net sprita");
}
sleeping=false;
Thread t =new Thread();
t.start();
 

}
public void stop() {
sleeping=true;
}
public void run() {
Graphics g =getGraphics();
  while(!sleeping);
update();
draw(g);
try {
  Thread.sleep(frameDelay);
} catch (InterruptedException ie) { }
}
  private void update() {
int keyState;
     keyState = getKeyStates();
if ((keyState & LEFT_PRESSED)!=0)
  Xspeed--;
  else if ((keyState & RIGHT_PRESSED)!=0)
  Xspeed++;
if ((keyState & DOWN_PRESSED)!=0)
  Yspeed++;
else if ((keyState & UP_PRESSED)!=0)
Yspeed--;
Xspeed=Math.min(Math.max(Xspeed,-8),8);
Yspeed=Math.min(Math.max(Yspeed,-8),8);
kubSprite.move(Xspeed,Yspeed);
checkBound(kubSprite);
}
private void draw(Graphics g) {
g.setColor(255,255,255);
g.fillRect(0,0,getWidth(),getHeight());
kubSprite.paint(g);
}

     private void checkBound(Sprite kubSprite) {
     if (sprite.getX()>0) sprite.move(-1,0); //если спрайт не зашел за левую границу экрана, то передвигать влево
if (sprite.getX()<getWidth()-sprite.getWidth()) sprite.move(1,0); //если спрайт не зашел за правую границу экрана, то передвигать вправо, также и для оси игрек, только изменить "getX" на "getY", а "getWidth" на "getHeight" и перемещение на 1 пиксель сделать для координаты игрек.
     }
}


В ЧОМ ЗДЕСЬ ОШИБКА????????????? :helpme: :helpme: :helpme: :helpme:

Изменено moDorks (28.09 / 21:14) (всего 1 раз)
- 28.09.2013 / 21:34
Naik
  Пользователь

Naik 
Сейчас: Offline
Misha (28.09.2013/20:50)
Naik, я конечно не знаю, но так у меня repaint вызывался только после завершения предыдущего и паузы 10мс)ладно, попробую... спс всем)
Но если я прав, и repaint вызывает paint, у тебя никогда не выполняется до конца paint. JVM хранит при этом точку, куда надо вернуться после вызова метода temp. И крутится это бесконечно, а JVM каждую итерацию сохраняет все новые точки возврата. И рано или поздно программа зависнет.
- 28.09.2013 / 21:36
aNNiMON
  Супервизор

aNNiMON 
Сейчас: Offline
Naik, нет, repaint() не вызывает рекурсию. Просто он принудительно заставляет перерисоваться экран.
Это следует понимать так: если в графическом буфере есть что выводить, команда repaint перенесёт это на экран. Если нет, вызов repaint игнорируется.
__________________
 let live

Изменено aNNiMON (28.09 / 21:38) (всего 1 раз)
Наверх  Всего сообщений: 16875
Фильтровать сообщения
Поиск по теме
Файлы топика (794)