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

📄 gamemidlet.java

📁 《神州》RPG游戏引擎
💻 JAVA
字号:
import java.io.IOException;
import java.io.InputStream;
import java.util.Timer;
import java.util.TimerTask;
import java.util.Vector;

import javax.microedition.media.*;

import javax.microedition.lcdui.*;
import javax.microedition.media.control.*;
import javax.microedition.midlet.*;
import javax.microedition.io.*;

public class GameMIDlet extends MIDlet
{
    public static GameMIDlet midlet;
    public Connection conn;
    public static Display disp;
    Player player,player2;
    Canvas1 canvas1;
    BattleCanvas battleCanvas;
    CoverCanvas coverCanvas;
    VolumeControl vc;
    int volume;
    private String[] musicUrl;
    private String[] battleMusicUrl;
    public static boolean showFPS;
    public static boolean showMem;

    public static boolean isVibratory = true;    //振动开关
    public static boolean isSonic = true;       //声音开关
    static MainRole mainRole;
    public static boolean isOutBattle;
    public Vector enemyVC;

    public GameMIDlet()
    {
        super();
        GameMIDlet.midlet=this;
        GameMIDlet.disp=Display.getDisplay(this);
        volume=60;
        musicUrl=new String[5];
        musicUrl[0]="/music/ff1town.mid";
        musicUrl[1]="/music/ff1overw.mid";
        musicUrl[2]="/music/Zelda_Underworld_Theme.mid";
        musicUrl[3]="/music/ff1_temple.mid";
        musicUrl[4]="/music/Zelda_Underworld_Theme.mid";

        battleMusicUrl=new String[3];
        battleMusicUrl[0]="/music/ff3jbatt.mid";
        battleMusicUrl[1]="/music/kouha-lvlstart.mid";
        battleMusicUrl[2]="/music/kouha-deth.mid";
        start();
    }
    
    protected void start()
    {        
        coverCanvas=new CoverCanvas("cover",disp,null);
        coverCanvas.start();
        disp.setCurrent(coverCanvas);
        this.clearObj(canvas1);
        System.gc();
    }
    
    protected void startGame()
    {   
        this.clearObj(coverCanvas);
        canvas1=new Canvas1("game",disp,null); 
        canvas1.init();
    }

    protected void startApp() throws MIDletStateChangeException
    {        
        if(canvas1!=null)
        {           
            canvas1.startGame();
            try {
                if(player!=null)player.start();
            } catch (MediaException e) {
                e.printStackTrace();
            }
        }       
    }


    protected void pauseApp() {
        if(canvas1!=null)canvas1.stop();
        try {
            if(player!=null)player.stop();
            } catch (MediaException e) {
                e.printStackTrace();
            }

    }


    protected void destroyApp(boolean arg0) throws MIDletStateChangeException {

        if(player!=null)
        {
            player.deallocate();
            player.close();
            player=null;
        }

        canvas1=null;
        this.notifyDestroyed();
    }

    public void addVolume()
    {
        volume = volume + 10;

        if(volume > 100)
            volume = 100;

        if(isSonic)
            vc.setLevel(volume);
        else
            vc.setLevel(0);
    }

    public void downVolume()
    {
        volume = volume - 10;

        if(volume<0)
            volume=0;

        if(isSonic)
            vc.setLevel(volume);
        else
            vc.setLevel(0);
    }

    public void setMusic(int musicIndex)
    {
        if(player!=null)
        {
            player.deallocate();
            player.close();
            player=null;
        }

        vc = null;
        System.gc();

        try {
            InputStream is = this.getClass().getResourceAsStream(musicUrl[musicIndex]);
            player = Manager.createPlayer(is,"audio/midi");
            player.realize();
            player.setLoopCount(-1);
            //player.prefetch();


            vc = (VolumeControl)player.getControl("VolumeControl");
            if(isSonic)
                vc.setLevel(volume);
            else
                vc.setLevel(0);

        } catch (IOException e) {
            e.printStackTrace();
        } catch (MediaException e) {
            e.printStackTrace();
        }


    }
    public void playBattleSound(int index,boolean loop,int volumnOffset)
    {

        if(player2!=null)
        {
            player2.deallocate();
            player2.close();
            player2=null;
        }

        try {
            InputStream is = this.getClass().getResourceAsStream(battleMusicUrl[index]);
            player2 = Manager.createPlayer(is,"audio/midi");
            player2.realize();
            if(loop)
            {
                player2.setLoopCount(-1);
            }
            else
            {
                player2.setLoopCount(1);
            }
            player2.prefetch();

            vc = (VolumeControl)player2.getControl("VolumeControl");
            if(isSonic)
                vc.setLevel(volume + volumnOffset);
            else
                vc.setLevel(0);

            player2.start();

        } catch (IOException e) {
            e.printStackTrace();
        } catch (MediaException e) {
            e.printStackTrace();
        }

    }
    public void stopBattleSound()
    {

        if(player2!=null)
        {
            try {
                player2.stop();
                player2.deallocate();
                player2.close();
                player2=null;
            } catch (MediaException e1) {
                e1.printStackTrace();
            }
        }

    }

    private boolean soundPlaying;
    public void playSound()
    {

        if(player!=null)
        {
            try {
                //setVolume(volume);
                player.start();
            } catch (MediaException e1) {
                e1.printStackTrace();
            }
        }
        soundPlaying=true;

    }
    public void stopSound()
    {

        if(player!=null && soundPlaying)
        {
            try {
                player.stop();
            } catch (MediaException e1) {
                e1.printStackTrace();
            }
        }
        soundPlaying=false;
    }

    Vector clearObjVC;
    Timer clearTimer;
    public void clearObj(Object obj)
    {
        if(obj==null)return;
        if(clearObjVC==null)clearObjVC=new Vector();
        clearObjVC.addElement(obj);
        if(clearTimer!=null)
        {
            clearTimer.cancel();  //把前一个计时器取消
            clearTimer=null;
        }
        clearTimer=new Timer();
        TimerTask timerTask=new TimerTask()
        {
            public void run()
            {
                for(int i=0;clearObjVC!=null && i<clearObjVC.size();i++)
                {
                    Object obj=clearObjVC.elementAt(i);
                    obj=null;
                }
                clearObjVC.removeAllElements();
                clearTimer=null;
                System.gc();
            }
        };
        clearTimer.schedule(timerTask,500);
    }

   
    public void toBattle(int enemyType)
    {
        SceneLib.scenes[SceneLib.currentSceneIndex].setRoleDir(mainRole.currentDirect);
        
        canvas1.stop();
        canvas1.inBattle=true;
        //this.clearObj(canvas1);
        
        battleCanvas=new BattleCanvas("battle",disp,null);
        battleCanvas.setEnemyType(enemyType);  //设置明雷或暗雷  

        if(enemyType==0)
        {
        Timer timer=new Timer();
        TimerTask timerTask=new TimerTask()
        {
            public void run()
           {
            battleCanvas.init();
            //disp.setCurrent(battleCanvas);
           }
        };
        timer.schedule(timerTask,0);
        }
        else
        {
            battleCanvas.init();
            //disp.setCurrent(battleCanvas);
        }
        
    }
    public void outBattle()
    {
        GameMIDlet.midlet.stopBattleSound();
        GameMIDlet.midlet.playSound();
        mainRole.clearUpData();  //清除升级显示信息
       
        this.clearObj(battleCanvas);
        battleCanvas=null;
        System.gc();
        
        isOutBattle=true;
        //canvas1=new Canvas1("game",disp,null);
        canvas1.loadScene();

        mainRole.setShowExcalMark(false);
       
    }



}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -