⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 subsprite.java

📁 J2ME编程的50个例子,适合掌上系统的编程
💻 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 + -