📄 battlecanvas.java
字号:
for (int i = 0; i < MAX_TANK_COUNT; i++) {
if (null != m_userTankSprite && null != m_userTankSprite[i]) {
m_layerManager.remove(m_userTankSprite[i]);
m_userTankSprite[i] = null;
}
}
m_userTankSprite = null;
for (int i = 0; i < MAX_BOMB_COUNT; i++) {
if (null != m_planeSprite && null != m_planeSprite[i]) {
m_layerManager.remove(m_planeSprite[i]);
m_planeSprite[i] = null;
}
}
m_planeSprite = null;
GameLogic.stop();
m_gameLogic = null;
for(int i = 0; i < m_layerManager.getSize(); i++){
Layer layer = m_layerManager.getLayerAt(i);
if(null!=layer){
m_layerManager.remove(layer);
layer=null;
}
}
m_layerManager = null;
instance = null;
}
catch (Exception ex) {
ex.printStackTrace();
}
}
private static void createProgressBar(){
try {
//needed for display progress bar
m_topPanel = null;
m_topPanel = Image.createImage("/tank/map_res/bottom.png");
m_progressImage=null;
m_progressImage=Image.createImage("/tank/map_res/progress.png");
m_progressOneImage=null;
m_progressOneImage=Image.createImage("/tank/map_res/progress_missile.png");
m_backgroundImg=null;
m_backgroundImg = Image.createImage("/tank/map_res/tank_factory.png");
}
catch (Exception ex) {
ex.printStackTrace();
}
}
private static void releaseProgressBar(){
try {
m_topPanel=null;
m_progressImage=null;
m_progressOneImage=null;
m_backgroundImg=null;
}
catch (Exception ex) {
ex.printStackTrace();
}
}
private void loadResource() {
try {
m_currentMenuButtonIndex = 0;
int startPosX, startPosY = 0;
Graphics g;
startPosX = 16;
startPosY = GameLogic.MAP_CELL_HEIGHT + GameLogic.MAP_HEIGHT + 3;
int bombStartPosX, bombStartPosY = 0;
bombStartPosX = 123;
bombStartPosY = startPosY;
m_strPoints=new StringBuffer(POINT_NUM_COUNT);
m_graphics=getGraphics();
createProgressBar();
m_panelIcon=null;
m_panelIcon = Image.createImage("/tank/map_res/bottom_icon.png");
m_shadowImage=null;
m_shadowImage = Image.createImage("/tank/map_res/fulfill.png");
m_enemyNumImage=null;
m_enemyNumImage=Image.createImage("/tank/map_res/enemy_num.png");
m_pointNumImage=null;
m_pointNumImage=Image.createImage("/tank/map_res/point_num.png");
m_stageNumImage=null;
m_stageNumImage=Image.createImage("/tank/map_res/stage_num.png");
//panel top /panel bottom
m_topPanelImageSprite = new Sprite(m_topPanel, GameLogic.MAP_WIDTH,
GameLogic.MAP_CELL_HEIGHT);
m_topPanelImageSprite.setRefPixelPosition(0, 0);
m_layerManager.insert(m_topPanelImageSprite, 0);
m_bottomPanelImageSprite = new Sprite(m_topPanel, GameLogic.MAP_WIDTH,
GameLogic.MAP_CELL_HEIGHT);
m_bottomPanelImageSprite.setFrame(1);
m_bottomPanelImageSprite.setRefPixelPosition(0,
GameLogic.MAP_HEIGHT + GameLogic.MAP_CELL_HEIGHT);
m_layerManager.insert(m_bottomPanelImageSprite, 0);
g=getGraphics();
DrawTools.displayProgressBarScreen(g, m_progressImage, m_progressOneImage,
m_topPanel, m_backgroundImg,
20);
//shadow 1
m_shadowImage1 = null;
m_shadowImage1 = Image.createImage(62, 14);
g = m_shadowImage1.getGraphics();
DrawTools.XDrawImage(g, m_shadowImage, 0, 0,
1, 1, 62, 14);
m_shadowImage1Sprite = new Sprite(m_shadowImage1, 62, 14);
m_shadowImage1Sprite.setRefPixelPosition(16, 2);
m_layerManager.insert(m_shadowImage1Sprite, 0);
//shadow2
m_shadowImage2 = null;
m_shadowImage2 = Image.createImage(103, 17);
g = m_shadowImage2.getGraphics();
DrawTools.XDrawImage(g, m_shadowImage, 0, 0,
63, 1, 103, 17);
m_shadowImage2Sprite = new Sprite(m_shadowImage2, 103, 17);
m_shadowImage2Sprite.setRefPixelPosition(16,
GameLogic.MAP_HEIGHT +
GameLogic.MAP_CELL_HEIGHT + 3);
m_layerManager.insert(m_shadowImage2Sprite, 0);
g=getGraphics();
DrawTools.displayProgressBarScreen(g, m_progressImage, m_progressOneImage,
m_topPanel, m_backgroundImg,
30);
//shadow3
m_shadowImage3 = null;
m_shadowImage3 = Image.createImage(56, 17);
g = m_shadowImage3.getGraphics();
DrawTools.XDrawImage(g, m_shadowImage, 0, 0,
165, 1, 56, 17);
m_shadowImage3Sprite = new Sprite(m_shadowImage3, 56, 17);
m_shadowImage3Sprite.setRefPixelPosition(123,
GameLogic.MAP_HEIGHT +
GameLogic.MAP_CELL_HEIGHT + 3);
m_layerManager.insert(m_shadowImage3Sprite, 0);
//金币
m_goldCoinImageSprite = new Sprite(m_panelIcon, PANEL_ICON_IMAGE_WIDTH,
PANEL_ICON_IMAGE_HEIGHT);
m_goldCoinImageSprite.setFrame(PANEL_ICON_IMAGE_GOLD_COIN);
m_goldCoinImageSprite.setRefPixelPosition(16, 2);
m_layerManager.insert(m_goldCoinImageSprite, 0);
//显示敌方坦克剩余个数
m_enemyTankImageSprite = new Sprite(m_panelIcon, PANEL_ICON_IMAGE_WIDTH,
PANEL_ICON_IMAGE_HEIGHT);
m_enemyTankImageSprite.setFrame(PANEL_ICON_IMAGE_ENEMY_TANK);
m_enemyTankImageSprite.setRefPixelPosition(182, 2);
m_layerManager.insert(m_enemyTankImageSprite, 0);
g=getGraphics();
DrawTools.displayProgressBarScreen(g, m_progressImage, m_progressOneImage,
m_topPanel, m_backgroundImg,
50);
//X
m_XImageSprite = new Sprite(m_panelIcon, PANEL_ICON_IMAGE_WIDTH,
PANEL_ICON_IMAGE_HEIGHT);
m_XImageSprite.setFrame(PANEL_ICON_IMAGE_X);
m_XImageSprite.setRefPixelPosition(198, 2);
m_layerManager.insert(m_XImageSprite, 0);
//point num sprite
int pointPosX, pointPosY = 0;
pointPosX = PANEL_ICON_GOLD_COIN_POS_X + PANEL_ICON_IMAGE_WIDTH;
pointPosY = PANEL_ICON_GOLD_COIN_POS_Y;
m_pointNumImageSprite = new Sprite[POINT_NUM_COUNT];
for (int i = 0; i < POINT_NUM_COUNT; i++) {
m_pointNumImageSprite[i] = new Sprite(m_pointNumImage,
PANEL_ICON_POINT_WIDTH,
PANEL_ICON_POINT_HEIGHT);
m_pointNumImageSprite[i].setRefPixelPosition(pointPosX +
i * PANEL_ICON_POINT_WIDTH, pointPosY);
m_pointNumImageSprite[i].setFrame(0);
m_layerManager.insert(m_pointNumImageSprite[i], 0);
}
g=getGraphics();
DrawTools.displayProgressBarScreen(g, m_progressImage, m_progressOneImage,
m_topPanel, m_backgroundImg,
60);
//剩余坦克的图标
m_userTankSprite = new Sprite[MAX_TANK_COUNT];
for (int i = 0; i < MAX_TANK_COUNT; i++) {
m_userTankSprite[i] = new Sprite(m_panelIcon, PANEL_ICON_IMAGE_WIDTH,
PANEL_ICON_IMAGE_HEIGHT);
m_userTankSprite[i].setVisible(true);
m_userTankSprite[i].setRefPixelPosition(startPosX +
i * PANEL_ICON_IMAGE_WIDTH,
startPosY);
m_layerManager.insert(m_userTankSprite[i], 0);
}
//剩余炸弹的图标
m_planeSprite = new Sprite[MAX_BOMB_COUNT];
for (int i = 0; i < MAX_BOMB_COUNT; i++) {
m_planeSprite[i] = new Sprite(m_panelIcon, PANEL_ICON_IMAGE_WIDTH,
PANEL_ICON_IMAGE_HEIGHT);
m_planeSprite[i].setVisible(true);
m_planeSprite[i].setRefPixelPosition(bombStartPosX +
i * PANEL_ICON_IMAGE_WIDTH,
bombStartPosY);
m_layerManager.insert(m_planeSprite[i], 0);
}
//green background for menu button
Image menuBKImage = Image.createImage(MENU_RECT_WIDTH, MENU_RECT_HEIGHT);
m_menuBackgroundSprite = new Sprite(menuBKImage, MENU_RECT_WIDTH,
MENU_RECT_HEIGHT);
m_menuBackgroundSprite.setRefPixelPosition(MENU_RECT_X, MENU_RECT_Y);
m_menuBackgroundSprite.setVisible(false);
m_layerManager.insert(m_menuBackgroundSprite, 0);
g = menuBKImage.getGraphics();
g.setColor(2, 56, 0);
g.fillRect(0, 0, MENU_RECT_WIDTH, MENU_RECT_HEIGHT);
g.setColor(127, 255, 0);
g.drawRect(0, 0, MENU_RECT_WIDTH, MENU_RECT_HEIGHT);
g = null;
menuBKImage = null;
createMenuButton();
createSwitch();
createButton();
g=getGraphics();
DrawTools.displayProgressBarScreen(g, m_progressImage, m_progressOneImage,
m_topPanel, m_backgroundImg,
70);
}
catch (Exception ex) {
ex.printStackTrace();
}
}
private void displayStage() {
try {
if (null == m_stageNumImage) {
return;
}
Graphics g = getGraphics();
//get the tens digit
int tenDigit = GameLogic.m_currentStage / 10;
int indDigit = GameLogic.m_currentStage % 10;
//draw digit
DrawTools.XDrawImage(g, m_stageNumImage, STAGE_X,
STAGE_Y,
tenDigit * STAGE_NUM_WIDTH, 0, STAGE_NUM_WIDTH,
STAGE_NUM_HEIGHT);
DrawTools.XDrawImage(g, m_stageNumImage,
STAGE_X+STAGE_NUM_WIDTH,
STAGE_Y,
indDigit * STAGE_NUM_WIDTH, 0, STAGE_NUM_WIDTH,
STAGE_NUM_HEIGHT);
}
catch (Exception ex) {
ex.printStackTrace();
}
}
//实时显示积分
private void displayPoints() {
if(GameLogic.m_tank==null||null==m_pointNumImageSprite){
return;
}
int points = GameLogic.m_tank.getPoints();
m_strPoints.delete(0,POINT_NUM_COUNT-1);
m_strPoints.append(points);
//转换成字符串
//获得每个位上的数值
//显示每个位上的值
for (int i = 0; i < POINT_NUM_COUNT; i++) {
m_pointNumImageSprite[i].setFrame(0);
}
for (int i = 0; i < m_strPoints.length(); i++) {
m_pointNumImageSprite[POINT_NUM_COUNT-m_strPoints.length()+i].setFrame(Character.digit(m_strPoints.charAt(i),10));
}
}
private void displayBombIcons() {
try {
if(null ==GameLogic.m_tank||null==m_planeSprite){
return;
}
int bombCount = GameLogic.m_tank.getBombCount();
for (int i = 0; i < bombCount; i++) {
m_planeSprite[i].setFrame(PANEL_ICON_IMAGE_BOMB_AVAILABLE);
if(false== m_planeSprite[i].isVisible()){
m_planeSprite[i].setVisible(true);
}
}
for (int i = bombCount; i < MAX_BOMB_COUNT; i++) {
m_planeSprite[i].setFrame(PANEL_ICON_IMAGE_BOMB_USED);
if(false== m_planeSprite[i].isVisible()){
m_planeSprite[i].setVisible(true);
}
}
}
catch (Exception ex) {
ex.printStackTrace();
}
}
private void displayEnemyTanks(){
try {
if(m_enemyNumImage==null ||null==m_graphics){
return;
}
int enemyTank=GameLogic.getEnemyTankLeft();
Graphics g=m_graphics;
int indDigit=enemyTank%10;
int tenDigit=enemyTank/10;
//十位数
DrawTools.XDrawImage(g,m_enemyNumImage,ENEMY_COUNT_X,ENEMY_COUNT_Y,tenDigit*DrawTools.ENEMY_NUM_WIDTH,0,
DrawTools.ENEMY_NUM_WIDTH,DrawTools.ENEMY_NUM_HEIGHT);
DrawTools.XDrawImage(g,m_enemyNumImage,ENEMY_COUNT_X+DrawTools.ENEMY_NUM_WIDTH,ENEMY_COUNT_Y,
indDigit*DrawTools.ENEMY_NUM_WIDTH,0,
DrawTools.ENEMY_NUM_WIDTH,DrawTools.ENEMY_NUM_HEIGHT);
}
catch (Exception ex) {
ex.printStackTrace();
}
}
private void displayUserTankIcons() {
if(null==GameLogic.m_tank||null==m_userTankSprite){
return;
}
try {
int tankLives = GameLogic.m_tank.getTankLives();
for (int i = 0; i < tankLives; i++) {
m_userTankSprite[i].setFrame(PANEL_ICON_IMAGE_TANK_ALIVE);
}
for (int i = tankLives; i < MAX_TANK_COUNT; i++) {
m_userTankSprite[i].setFrame(PANEL_ICON_IMAGE_TANK_DEAD);
}
}
catch (Exception ex) {
ex.printStackTrace();
}
}
private static void releaseMenuButton(){
m_menuButtonImg=null;
m_menuWordImg=null;
for (int i = 0; i < MENU_BUTTON_COUNTS; i++) {
if (null != m_menuButtonImgSprite && null != m_menuButtonImgSprite[i]) {
m_layerManager.remove(m_menuButtonImgSprite[i]);
m_menuButtonImgSprite[i] = null;
}
}
m_menuButtonImgSprite = null;
for (int i = 0; i < MENU_BUTTON_COUNTS; i++) {
if (null != m_menuWordImgSprite && null != m_menuWordImgSprite[i]) {
m_layerManager.remove(m_menuWordImgSprite[i]);
m_menuWordImgSprite[i] = null;
}
}
m_menuWordImgSprite = null;
}
private void createSwitch() {
try {
m_switchImg = null;
m_switchImg = Image.createImage("/tank/map_res/switch.png");
m_switchIndex=new int[DrawTools.SWITCH_WORD_COUNTS];
m_switchImgSprite = new Sprite[DrawTools.SWITCH_WORD_COUNTS];
for(int i=0;i<DrawTools.SWITCH_WORD_COUNTS;i++){
m_switchImgSprite[i] = new Sprite(m_switchImg, DrawTools.SWITCH_WORD_WIDTH,
DrawTools.SWITCH_WORD_HEIGHT);
m_layerManager.insert(m_switchImgSprite[i], 0);
}
if(GameLogic.m_soundOn==true){
m_switchState=DrawTools.SWITCH_OPEN;
}else{
m_switchState=DrawTools.SWITCH_CLOSE;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -