📄 subsprite.java
字号:
package demo;
import java.io.IOException;
import java.util.Random;
import javax.microedition.lcdui.Image;
import javax.microedition.lcdui.game.Sprite;
public class SubSprite extends Sprite{
private boolean m_bRight = true;
private int m_nSpeed = 2; //战舰的移动速率(注意不是速度)
private Random m_Random; //随机数对象
public MissileSprite m_Missile; //战舰携带的炮弹
public SubSprite(Image image, int frameWidth, int frameHeight) {
super(image, frameWidth, frameHeight);
defineReferencePixel(frameWidth / 2, frameHeight / 2);
setVisible(false);
try{
Image img = Image.createImage("/demo/missile.png");
m_Missile = new MissileSprite(img,8,7);
}
catch(IOException ioe){}
catch(Exception e){}
m_Random = new Random();
}
//产生潜艇
//参数nX、nY分别是潜艇位置的横纵坐标
//参数bLeft指定潜艇方向,参数nSpeed指定潜艇速率
public void Start( int nX, int nY, boolean bRight, int nSpeed ){
m_bRight = bRight;
if( bRight )
setTransform(Sprite.TRANS_NONE);
else
setTransform(Sprite.TRANS_MIRROR);
setRefPixelPosition( nX, nY );
m_nSpeed = nSpeed;
setVisible( true );
}
//逻辑操作,控制炮弹
public void Logic( int srcWidth, int scrHeight ){
m_Missile.Logic(srcWidth, scrHeight);
if( !isVisible() )
return;
int x = getRefPixelX();
int y = getRefPixelY();
if( m_bRight ){
x += m_nSpeed;
if( x > srcWidth + getWidth()/2 )
setVisible(false);
}
else{
x -= m_nSpeed;
if( x < - getWidth()/2 )
setVisible(false);
}
setRefPixelPosition(x, y);
//以10分之1的概率发射炮弹
int nRs = m_Random.nextInt() % 10;
if( Math.abs(nRs) == 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, false, 4 );
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -