📄 missilesprite.java
字号:
package demo;
import java.io.IOException;
import java.io.InputStream;
import javax.microedition.lcdui.Image;
import javax.microedition.lcdui.game.Sprite;
import javax.microedition.media.Manager;
import javax.microedition.media.MediaException;
import javax.microedition.media.Player;
public class MissileSprite extends Sprite{
private int m_nSpeed = 0; //导弹的速率(注意速率和速度的区别)
private boolean m_bDown = true; //是否是向下发射的
private Player m_Player; //导弹声音对象
public MissileSprite(Image image, int frameWidth, int frameHeight)
{
super(image, frameWidth, frameHeight);
defineReferencePixel( frameWidth / 2, frameHeight / 2 );
setVisible(false);
try
{//读取声音文件
InputStream is = this.getClass().getResourceAsStream("/demo/missile.wav");
m_Player = Manager.createPlayer(is,"audio/x-wav");
}
catch (IOException e){}
catch (MediaException e){}
}
//发射导弹,参数nX、nY分别是导弹初始的横纵坐标
//参数bDown为true表示导弹向下发射,反之向上发射
//参数nSpeed为导弹的速率
public void Start( int nX, int nY, boolean bDown, int nSpeed ) {
m_nSpeed = nSpeed;
m_bDown = bDown;
setRefPixelPosition( nX, nY );
setVisible(true);
try
{
m_Player.start();
}
catch (MediaException e){}
}
//让导弹消失
public void Stop() {
setVisible(false);
}
//逻辑操作,控制导弹的运动
//参数scrWidth、scrHeight分别是屏幕的宽和高
public void Logic( int scrWidth, int scrHeight ) {
if( !isVisible() )
return;
int nX = getRefPixelX();
int nY = getRefPixelY();
if( m_bDown ){
nY += m_nSpeed;
//如果飞出屏幕,则导弹消失
if( nY > scrHeight )
setVisible(false);
}
else{
nY -= m_nSpeed;
//如果飞出屏幕,则导弹消失
if( nY < 0 )
setVisible(false);
}
setRefPixelPosition( nX, nY );
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -