📄 bulletsprite.java
字号:
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 BulletSprite extends Sprite{
//定义子弹速度变量
private int m_nSpeed = 0;
//定义子弹方向变量
private int m_nDir = 0;
private Player m_Player;
public BulletSprite(Image image, int frameWidth, int frameHeight)
{ //调用父类的构造函数
super(image, frameWidth, frameHeight);
//定义参考像素点
defineReferencePixel( frameWidth / 2, frameHeight / 2 );
//设置图层为不可见
setVisible(false);
//播放音频文件
try
{
InputStream is = this.getClass().getResourceAsStream("/Bullet.wav");
m_Player = Manager.createPlayer(is,"audio/x-wav");
}
catch (IOException e){}
catch (MediaException e){}
}
//设置并显示代表子弹的精灵对象的方法
public void Start( int nX, int nY, int nDir, int nSpeed ) {
m_nSpeed = nSpeed;
m_nDir = nDir;
setRefPixelPosition( nX, nY );
setVisible(true);
try
{
m_Player.start();
}
catch (MediaException e){}
}
//不显示代表子弹的精灵对象的方法
public void Stop() {
setVisible(false);
}
//根据子弹方向和速度,调整显示的位置
public void Logic() {
if( !isVisible() )
return;
int nX = getRefPixelX();
int nY = getRefPixelY();
switch( m_nDir ){
case 0://上方
nY -= m_nSpeed;
break;
case 1://右方
nX += m_nSpeed;
break;
case 2://下方
nY += m_nSpeed;
break;
case 3://左方
nX -= m_nSpeed;
break;
}
setRefPixelPosition( nX, nY );
}
//根据子弹的方向,得到当前坐标在地图中单元格的列数
public int GetCurCol(){
int nX = getRefPixelX();
switch( m_nDir ){
case 0://上方
case 2://下方
break;
case 1://右方
nX += 1;
break;
case 3://左方
nX -= 1;
break;
}
return nX / 15;
}
// 根据子弹的方向,得到当前坐标在地图中单元格的行数
public int GetCurRow(){
int nY = getRefPixelY();
switch( m_nDir ){
case 0://上方
nY -= 1;
break;
case 2://下方
nY += 1;
break;
case 1://右方
case 3://左方
break;
}
return nY / 15;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -