📄 actiongamecanvas.java~8~
字号:
import javax.microedition.lcdui.*;
import javax.microedition.lcdui.game.*; // Use GameCanvas of MIDP 2.0
import javax.microedition.media.*;
import java.io.*;
public class ActionGameCanvas extends GameCanvas implements Runnable{
GameMIDlet gameParent;
Thread actionThread;
int millPerTick = 200;
Sprite myHero;
boolean heroDir=true; // true = Right
int heroStep; // movement pace distance
int currentSeq = 0;
int seqStand[] = new int[] { 0, 1, 2, 3, 4 }; // seq 0, stand:0-4,
int seqWalk[] = new int[] { 5, 6, 7, 8 }; // seq 3, right-walk :5-8
int seqRun[] = new int[] { 9, 10, 11, 12 }; // seq 4, right-run:9-12,
int seqJump[] = new int[] { 13, 14, 15, 16, 17 }; // seq 1, jump-up: 13-17,
int seqLand[] = new int[] { 17, 18, 19, 20, 21 }; // seq 2, land-down(fire): 17-21,
int seqAttack[] = new int[] { 22, 23, 24, 25, 26, 27 }; // seq 5, attack: 22-27
LayerManager lm;
Player player; // for playing MIDI
boolean playSound=false;
//===========================================================================
public ActionGameCanvas(GameMIDlet parent){
super(true); // disable keypressed() function
setFullScreenMode(true);
this.gameParent = parent;
actionThread = new Thread(this);
initCanvas();
actionThread.start();
}
//===========================================================================
public void initHero(){
myHero = createSprite("/nghung.png", 74, 52); // set frame size
System.out.println("Create Sprite OK.");
myHero.setFrameSequence( seqStand ); // SET frame sequence
myHero.defineReferencePixel(37, 26); // SET REF POINT, centre of frame
myHero.setPosition(30, 30); // set sprite position
myHero.setRefPixelPosition(myHero.getRefPixelX(), myHero.getRefPixelY());
heroStep = 5;
myHero.setFrame(0);
}
//===========================================================================
public void initCanvas(){
try{
lm = new LayerManager();
//-----------------
initHero();
lm.append(myHero);
//-----------------
// other character put here !
}catch (Exception e) {
System.out.println("Exceiption here" + e.getMessage());
e.printStackTrace();
}
} // end-of initHero()
//===========================================================================
public void getInput(){
int keyStates = getKeyStates();
//System.out.println("keycode = " + keyStates);
// reset character animation sequence to default
if ( keyStates==0 && currentSeq!=0 ){
myHero.setFrameSequence( seqStand );
currentSeq = 0;
}
//-----------------------------------------
if ((keyStates & UP_PRESSED) != 0) {
//if (currentSeq != 1){
myHero.setFrameSequence( seqJump );
//currentSeq = 1;
//}
myHero.setPosition(myHero.getX(), myHero.getY() - heroStep);
}
else if ((keyStates & DOWN_PRESSED) != 0) {
if (currentSeq != 2){
myHero.setFrameSequence( seqLand );
currentSeq = 2;
}
myHero.setPosition(myHero.getX(), myHero.getY() + heroStep);
}
//-----------------------------------------
if ((keyStates & LEFT_PRESSED) != 0) {
if (currentSeq != 3){
myHero.setFrameSequence( seqWalk );
currentSeq = 3;
}
if (heroDir==true){
heroDir = false;
myHero.setTransform(Sprite.TRANS_MIRROR);
}
myHero.setPosition(myHero.getX() - heroStep, myHero.getY());
}
else if ((keyStates & RIGHT_PRESSED) != 0) {
if (currentSeq != 3){
myHero.setFrameSequence( seqWalk );
currentSeq = 3;
}
if (heroDir==false){
heroDir = true;
myHero.setTransform(Sprite.TRANS_NONE);
}
myHero.setPosition(myHero.getX() + heroStep, myHero.getY());
}
//-----------------------------------------
if ((keyStates & FIRE_PRESSED) != 0){
if (currentSeq != 5){
myHero.setFrameSequence( seqAttack );
currentSeq = 5;
}
}
//-----------------------------------------
if ((keyStates & GAME_A_PRESSED) != 0) { // the num_7_key
if (playSound == false)
playSound = true;
else
playSound = false;
playMIDI();
}
} // end of getInput()
/* public void getInput() {
int keystate = getKeyStates();
switch(keystate){
case UP_PRESSED:
myHero.setPosition(myHero.getX(), myHero.getY() - heroStep);
break;
case DOWN_PRESSED:
myHero.setPosition(myHero.getX(), myHero.getY() + heroStep);
break;
case LEFT_PRESSED: // true for facing Right
if (heroDir==true){
heroDir = false;
myHero.setTransform(Sprite.TRANS_MIRROR);
}
myHero.setPosition(myHero.getX() - heroStep, myHero.getY());
break;
case RIGHT_PRESSED:
if (heroDir==false){
heroDir = true;
myHero.setTransform(Sprite.TRANS_NONE);
}
myHero.setPosition(myHero.getX() + heroStep, myHero.getY());
break;
case GAME_A_PRESSED: // the num_7_key
if (playSound==false)
playSound=true;
else
playSound=false;
playMIDI();
break;
}
} // end-of getInput()
*/
//===========================================================================
public void keyPressed(int keyCode) {
switch(getGameAction(keyCode)){
}
System.out.println("Key pressed.");
}
//===========================================================================
private Sprite createSprite(String imgPath, int fWidth, int fHeight) {
Image img = null;
try {
img = Image.createImage(imgPath);
} catch (Exception e) {
System.out.println("Error create Sprite");
}
return new Sprite(img, fWidth, fHeight);
}
//===========================================================================
public void clearScreen(Graphics g){
g.setColor(255,255,255);
g.fillRect(0, 0, getWidth(), getHeight());
}
//===========================================================================
public void drawGraphics(Graphics g) {
clearScreen(g);
myHero.setPosition(myHero.getX(), myHero.getY());
myHero.nextFrame();
// draw enemy here
lm.paint(g, 0, 0);
flushGraphics();
}
//===========================================================================
public void run(){
Graphics g = getGraphics();
while (gameParent.running){
// game running
//updateEnemyPos();
getInput();
drawGraphics(g);
try{
Thread.sleep(millPerTick);
} catch (InterruptedException e){
}
} // end-of while-loop
} // end-of run()
//===========================================================================
public void playMIDI() {
try {
if (player == null) {
InputStream is = getClass().getResourceAsStream("/MugDout.mid");
player = Manager.createPlayer(is, "audio/midi");
}
if (playSound==true){
player.start();
}else{
player.stop();
}
} catch (Exception e) {
}
}
} // end-of ActionGameCanvas
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -