Gostaria de saber se é possível duplicar um sprite fazendo com que esse assuma estados diferentes do original.
No jogo que estou fazendo por exemplo, terá alguns inimigos que serão iguais…
Para não criar outros Sprites contendo a mesma animação e imagem e pesar meu jogo pensei em duplicar um já criado, assim como se faz no Flash por exemplo, onde você consegue duplicar um objeto transformando ele mas sem isso se aplicar ao original.
Será que dá pra fazer isso, ou preciso criar outro sprite?
Realmente em Flash é outra história! Porém, você pode fazer algo parecido em J2me. Voce pode ficar redesenhado um Sprite chamando o metodo paint dele. Se precisar te mando um exemplo. Sem dúvida essa é uma boa prática de programação para j2me! :lol: Pois dessa forma você economiza bastante memória.
public void run() {
personagemSprite.setPosition(50, 50);
personagemSprite.paint(g);
//2 sprite que na real é o mesmo
personagemSprite.setPosition(0, 0);
personagemSprite.paint(g);
flushGraphics();
}
Se tiver fazendo herança com o Canvas, coloca esse código dentro do paint(Graphics g){}.
Entenda, se queres manipular cada um dos sprites então esse código não é legal, serve só para te dar um norte. Fiz assim em um jogo de cartas para faculdade que desenvolvi. O jogo comporta 4 jogadores, cada qual, pode ter até 14 cartas. Como cada carta tem um naipe, ao invéz de criar 14 naipes para cada jogador pela instanciação das imagens eu usei somente um e com o método setFrame() passavo o indíce do array das sequências.
Se ainda tiver dúvidas só perguntar!
Pronto agora para vê-los em movimento de forma aleatória:
public void run() {
while(true){
g.setColor(255, 255, 255);
g.fillRect(0, 0, getWidth(), getHeight());
for (int i = 0; i < personagemsArray.length; i++) {
personagemsArray[i].draw(g);
try {
Thread.sleep(10);
} catch (InterruptedException e){
e.printStackTrace();
}
}
flushGraphics();
}
}
Para pegar as coordenadas aleatórias tem o “Random r”, porém você o coloca no construtor, assim só o instancia uma vez. Pronto, agora vc tem tudo para aperfeicoar e estudar o GameCanvas do j2me e nós mostrar o que sabes fazer
public void draw(Graphics g){
Random r= new Random();
if(x > w){
x-=r.nextInt(5);
}else if(x < 0){
x+=r.nextInt(5);
}else if(y > h){
y-=r.nextInt(5);
}else if(y < 0){
y +=r.nextInt(5);
}else{
int indexMove = r.nextInt(2);
if(indexMove == 1){
int index = r.nextInt(4);
if(index == 1){
y-=r.nextInt(5);
x-=r.nextInt(5);
}else if(index == 2){
y+=r.nextInt(5);
x+=r.nextInt(5);
}else if(index == 3){
y-=r.nextInt(5);
x+=r.nextInt(5);
}else if(index == 4){
y+=r.nextInt(5);
x-=r.nextInt(5);
}
}
}
personagemSprite.setPosition(x, y);
personagemSprite.paint(g);
}