-2
내 populateArrayEnemy 메서드에서 배열을 20 개의 개체로 채우고 끝에 모두 인쇄합니다.
하지만 페인트와 업데이트 방법에서 enemyShip.size는 0을 반환합니다. 어디서 잘못 되었나요?ArrayList 크기는 0을 반환합니다
업데이트 : 내 주요 방법은 다음과 같습니다.
public class ActionEnemyShip {
EnemyShip es;
public ArrayList<EnemyShip> enemyShip = new ArrayList<EnemyShip>();
// Updating coordinates method //////////////
public void populateArrayEnemy(MainClass mc){
int Min = 0, Max=800, result;
for (int i =0; i <=20; i++){
x = Min + (int)(Math.random() * ((Max - Min) + 1));
y = 0 + (int)(Math.random() * ((600 - 0) + 1));
EnemyShip es = new EnemyShip(x,y);
enemyShip.add(es);
}
System.out.println(enemyShip);
}
public void update(MainClass mc, Player p){
for (int i = 0; i < enemyShip.size(); i++) {
EnemyShip es = new EnemyShip();
es = enemyShip.get(i);
es.setX(es.getX()+ENEMY_SHIP_SPEED);
enemyShip.set(i, es);
}
}
// Paint method //////////////////////
public void paint(Graphics g, MainClass mc) {
url = mc.getDocumentBase();
enemyShipImg = mc.getImage(url, "craft.png");
System.out.println(" paint "+enemyShip.size());
for (int i = 0; i < this.enemyShip.size(); i++){
EnemyShip es = new EnemyShip();
es = this.enemyShip.get(i);
g.drawImage(enemyShipImg, es.getX(), es.getY(), mc);
}
다음은이 코드는 매우 저조한 기록, 내 주요 방법은 일반적으로
public void init()
{
setSize(800, 600);
es = new EnemyShip();
as = new ActionEnemyShip();
//as.populateArrayEnemy(mc);
}
public void start() {thread.start();}
public void destroy() {running = false;}
public void stop() {running = false;}
public void run()
{
while(running)
{
as.update(this, p);
}
public void paint(Graphics g){
as.paint(g, this);
}
populateArrayEnemy가 update/paint 전에 호출됩니까? –
'main()'메소드를 보여주세요. –
예, Player 클래스에서 new ActionEnemyShip(); \t \t as.populateArrayEnemy (mc); – RomZes