📄 shipsprite.java
字号:
package demo;
import java.io.IOException;
import javax.microedition.lcdui.Image;
import javax.microedition.lcdui.game.GameCanvas;
import javax.microedition.lcdui.game.Sprite;
public class ShipSprite extends Sprite {
protected int m_nSpeed = 3; //战舰的移动速率(注意不是速度)
public MissileSprite m_Missile; //战舰携带的炮弹
public ShipSprite(Image image, int frameWidth, int frameHeight) {
super(image, frameWidth, frameHeight);
defineReferencePixel(frameWidth / 2, frameHeight / 2);
try{
Image img = Image.createImage("/demo/missile.png");
m_Missile = new MissileSprite(img,8,7);
}
catch(IOException ioe){}
catch(Exception e){}
}
//逻辑操作,控制炮弹
public void Logic( int scrWidth, int scrHeight ){
m_Missile.Logic( scrWidth, scrHeight );
}
//处理按键的操作,参数keyStates为按键状态
public void Input( int keyStates, int scrWidth, int scrHeight )
{
int x = getRefPixelX();
int y = getRefPixelY();
if ((keyStates & GameCanvas.LEFT_PRESSED) != 0){
x -= m_nSpeed;
setTransform(Sprite.TRANS_MIRROR);
}
if ((keyStates & GameCanvas.RIGHT_PRESSED) != 0){
x += m_nSpeed;
setTransform(Sprite.TRANS_NONE);
}
if( x < getWidth()/2 )
x = getWidth()/2;
if( x > scrWidth - getWidth()/2 )
x = scrWidth - getWidth()/2;
setRefPixelPosition(x, y);
if ((keyStates & GameCanvas.FIRE_PRESSED) != 0)
{//发射炮弹
CreateMissile();
}
}
//发射炮弹
public void CreateMissile(){
if( m_Missile.isVisible() )
return;
m_Missile.setVisible(true);
int nX = getRefPixelX();
int nY = getRefPixelY();
m_Missile.Start( nX, nY, true, 4 );
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -