galera, queria simular o efeito de segurar uma tecla do teclado em TouchScreen
Acontece o seguinte: to fazendo um joguinho e quero que enquanto a pessoa segure o botão virtual na tela o personagem se comporte da mesma maneira do que se estivesse segurando o botão no teclado.(A merda é que o meu celular n tem teclas, é só touchscreen :/).
eu uso do teclado com keyState & DOWN_PRESSED, por exemplo,
e no botão touchScreen eu uso pointer pressed, pointer released e pointer dragged.
O que acontece de errado: Se eu clico o mouse no botão ele anda certo. Se eu configuro pra fazer quando eu solto, tb funciona. Mas aí eu tenho que ficar clicando feito um demente, pq cada clique dispara o evento. Devo estar errando e besteira… me ajudem se puderem
métodos de interesse:
protected void pointerPressed(int x, int y){
if (botaoDireita.isTouched(x, y))
return;
if (botaoEsquerda.isTouched(x, y))
return;
if (botaoCima.isTouched(x, y))
return;
if (botaoBaixo.isTouched(x, y))
return;
if (botaoParar.isTouched(x, y))
return;
}
//
//
//public void onButttomTouch(Sprite sprite){
//if(sprite == spriteHyo){
// missoes[2]=true;
// if(missoes[4]==true){
// this.falaHyo.setFrameSequence(gameDesign.Hyofl03);
// this.falaBuddy.setFrameSequence(gameDesign.Buddyfl01);
// }else if(missoes[2]==true){
//
// this.falaHyo.setFrameSequence(gameDesign.Hyofl02);
//
//}
//
//}
//}
public void onButtomTouch(ImageButtom buttom) {
while (!this.interrupted) {
if (buttom == botaoDireita) {
// //Cria o alerta de mensagem
// Alert alert = new Alert("Tocado no botão.");
// //Mostra a mensagem na tela
// Display.getDisplay(GameMidlet.a).setCurrent(alert, this);
//tratamento para botão direito
if (this.lastDirection != RIGHT) {
this.lastDirection = RIGHT;
if(missoes[1]==false){
this.spriteSte.setFrameSequence(gameDesign.SteDireita);
}
if (missoes[1] == true) {
this.spriteSte.setFrameSequence(gameDesign.SteDireitaG);
}
continue;
}
this.spriteSteAnimator.forward();
this.spriteSte.move(SPEED, 0);
if (this.spriteSteCollides(this.spriteSte)) {
this.spriteSte.move(-SPEED, 0);
//this.spriteHyo.setFrameSequence(gameDesign.HyoEsquerda);
continue;
}
this.adjustViewport(this.viewPortX + SPEED, this.viewPortY);
} else if (buttom == botaoEsquerda) {
if (this.lastDirection != LEFT) {
this.lastDirection = LEFT;
//coloca para a esqueda
if(missoes[1]==false){
this.spriteSte.setFrameSequence(gameDesign.SteEsquerda);}
if(missoes[1]==true){
this.spriteSte.setFrameSequence(gameDesign.SteEsquerdaG);
}
continue;
}
//roda o filminho de andar a esquerda
this.spriteSteAnimator.forward();
//move efetivamente(desloca) o boneco para a esquerda
this.spriteSte.move(-SPEED, 0);
//se ele bater em alguma coisa, faz ele voltar para onde estava(antes de ir pra esquerda)
if (this.spriteSteCollides(this.spriteSte)) {
this.spriteSte.move(SPEED, 0);
continue;
}
//ajusta a visão do usuário para manter o bonequinho na tela
this.adjustViewport(this.viewPortX - SPEED, this.viewPortY);
}else if(buttom == botaoCima){
if (this.lastDirection != UP) {
this.lastDirection = UP;
if(missoes[1]==false){
this.spriteSte.setFrameSequence(gameDesign.SteCostas);
// this.spriteHyo.setFrameSequence(gameDesign.HyoEsquerda);
}
if (missoes[1] == true) {
this.spriteSte.setFrameSequence(gameDesign.SteCostasG);
}
continue;
}
this.spriteSteAnimator.forward();
this.spriteSte.move(0, -SPEED);
if (this.spriteSteCollides(this.spriteSte)) {
this.spriteSte.move(0, SPEED);
continue;
}}
else if (buttom == botaoBaixo){
//tratamento para baixo
if (this.lastDirection != DOWN) {
this.lastDirection = DOWN;
// this.spriteSte.setFrameSequence(gameDesign.SteFrente);
if(missoes[1]==false){
this.spriteSte.setFrameSequence(gameDesign.SteFrente);
}
if(missoes[1]==true){
this.spriteSte.setFrameSequence(gameDesign.SteFrenteG);
}
continue;
}
this.spriteSteAnimator.forward();
this.spriteSte.move(0, SPEED);
if (this.spriteSteCollides(this.spriteSte)) {
this.spriteSte.move(0, -SPEED);
continue;
}
this.adjustViewport(this.viewPortX, this.viewPortY + SPEED);
}
else if(buttom == botaoParar){
this.spriteSteAnimator.setMoving(false);
}
try{Thread.sleep(50);}catch(Exception e){}
}
//this.spriteSteAnimator.setMoving(false);
}
