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

📄 canvas1.java

📁 《神州》RPG游戏引擎
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
                
                try {
                    Thread.sleep(delay);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
                
            }
            //停止run线程后
            if(enemyFactory!=null)
                enemyFactory.stopAutoMove();
            if(npcFactory!=null)
                npcFactory.stopAutoMove();   
            ThreadRunning = false;
    }
    
    public void redrawAll()
    {
        if(!isDrawing)
        {
            isDrawing = true;            
            
            g.setColor(0x000000);
            g.fillRect(0,0,width,height);
    
            
            if(backLayer != null)
                backLayer.paint(g,0,0);     //绘制背景
            
            
            if(roleLayer != null)
                roleLayer.sort();           //所有角色重新排序
            
            
            if(roleLayer != null)
                roleLayer.paint(g,0,0);     //绘制角色层
            
            
            if(frontLayer != null)
                frontLayer.paint(g,0,0);    //绘制前景
              
            
    
         
          
            //if(fixLayer!=null)fixLayer.paint(g,0,0);  //绘制固定层
            //drawFont();   
 
   
         
          
            //监测遇明雷            
            if(GameMIDlet.mainRole.checkTouchEnemy(enemyFactory,roleLayer))
            {
                GameMIDlet.midlet.toBattle(1);
            }
            
    
            //检测遇暗雷            
            boolean touchMine=false;
            if(GameMIDlet.mainRole.isCanTouchMine())
            {
                if(GameMIDlet.mainRole.getMineTimeCounter()<=0)
                {
                    GameMIDlet.mainRole.setShowExcalMark(true);
                    touchMine=true;
                }
            }
            
          
            ChatArea chatArea=GameMIDlet.mainRole.getChatArea();
    
            if(runStatus!= Canvas1.STATUS_CHAT)
            {
                if(chatArea!=null)
                {
	            	MySprite parent = chatArea.getParent();
	                //System.out.println("进入"+parent.getName()+"对话区");
	                chatSprite=parent;
	                /*
	                if(msgBoard==null)
	                {
	                    Vector msgVC = chatSprite.getMsgVC();
	                    msgBoard = new MsgBoard(this,g);
	                    msgBoard.setMsgVC(msgVC); //设置对话内容集合
	                    msgBoard.setMsgPoint(chatSprite.getMsgPoint()); //设置对话指针
	                    msgBoard.visible=false; //暂时不显示对话
	                }
	                */
	                inChatArea=true; //设置在对话区标记
                }
                else
                {
                	inChatArea=false;
                	chatSprite=null;
                }
            }          

   
            OutArea outArea=GameMIDlet.mainRole.getOutArea();
            if(outArea!=null)
            {
                System.out.println("到达出口");
                SceneLib.currentSceneIndex=outArea.getOutSceneIndex();
                SceneLib.scenes[SceneLib.currentSceneIndex].setRolePosition(outArea.getRoleX(),outArea.getRoleY());
                SceneLib.scenes[SceneLib.currentSceneIndex].setRoleDir(outArea.getRoleDir());
                //System.out.println("GameMIDlet.sceneIndex="+GameMIDlet.sceneIndex);
                //System.out.println("GameMIDlet.scenes["+GameMIDlet.sceneIndex+"].getRoleX()="+GameMIDlet.scenes[GameMIDlet.sceneIndex].getRoleX());
                //System.out.println("GameMIDlet.scenes["+GameMIDlet.sceneIndex+"].getRoleY()="+GameMIDlet.scenes[GameMIDlet.sceneIndex].getRoleY());
                System.out.println("清除npc");
                if(GameMIDlet.midlet.enemyVC!=null)GameMIDlet.midlet.enemyVC.removeAllElements();
                if(npcFactory!=null)
                {
                    npcFactory.stopAutoMove();
                    Vector npcVC=npcFactory.getSpriteVC();
                    for(int i=0;npcVC!=null && i<npcVC.size();i++)
                    {    
                        MySprite npc=(MySprite)npcVC.elementAt(i);
                        npc.stopAutoMove();
                        if(!npc.isStatic)npc=null;
                    }
                    npcFactory.clearSpriteVC();
                    npcFactory=null;
                }
                System.out.println("清除enemy");
                if(enemyFactory!=null)
                {
                    enemyFactory.stopAutoMove();
                    Vector enemyVC=enemyFactory.getSpriteVC();
                    for(int i=0;enemyVC!=null && i<enemyVC.size();i++)
                    {
                        EnemySprite enemy=(EnemySprite)enemyVC.elementAt(i);
                        enemy.stopAutoMove();
                        enemy=null;
                    }
                    enemyFactory.clearSpriteVC();
                    enemyFactory=null;
                }
                stop();
                if(!isLoading)loadScene();
                //loadScene();
            }    
    
            if(msgBoard!=null && msgBoard.visible)
            {
                //System.out.println("msgBoard.show()");
                msgBoard.show();
                //System.out.println("msgBoard.show()后");
            }
    
            if(faceIndex>-1 && faceIndex<FaceLib.faceSprites.length)
            {
            faceShower.setFaceIndex(faceIndex);
            faceShower.paint(GameMIDlet.mainRole.getX()-windowX+2, GameMIDlet.mainRole.getY()-windowY-20);
            }           

    
            if(GameMIDlet.mainRole.isShowExcalMark())  //显示遇敌感叹号
            {
                GameMIDlet.mainRole.drawExcalMark(g,windowX,windowY);
            }
            if(touchMine)
            {
                GameMIDlet.midlet.toBattle(0);
            }           

           
            if(runStatus>=STATUS_SHOWMENU && runStatus<=STATUS_SHOWSYSTEM)
            {
                gameMenu.showMenu();
            }
    
            if(runStatus==STATUS_SHOWSTATUS)
            {
                gameMenu.showStatus();
            }            
     
            if(runStatus==STATUS_SHOWITEM)
            {
                gameMenu.showItem();
            }
    
            if(runStatus==STATUS_SHOWEQUIP)
            {
                gameMenu.showEquip();
            }           
 
            
            if(runStatus==STATUS_SHOWSKILL)
            {
                gameMenu.showSkill();
            }
            if (runStatus == STATUS_SHOPING)
            {
                shoping.ShowShopUi(shopStatus);
            }
            if (runStatus == STATUS_SHOWSYSTEM && sysMenu!=null)
            {
                sysMenu.ShowUI(0);
    
                if (sysMenuCmdStatus == SYSTEM_CMDMENU_OPENING)
                {
                    cmdListStatus = SYSTEM_CMDLIST_OPENING;
                    sysMenu.showCmdMenu();
                }
            }
            if(runStatus==STATUS_SHOWMISSION && missionTab!=null)
            {
            	missionTab.paint(g);
            }
            if(itemStatus == ITEMSTATUS_COMMAND || equipStatus == EQUIPSTATUS_COMMAND)
            {
                if(matCommand!=null)
                    matCommand.paint(g);
            }
            if(myAlert!=null && myAlert.isShow())
            {
                myAlert.paint(g);
            }
           
            
            scrollWindow();
            
            
            g.setColor(0xFF0000);
            if(GameMIDlet.showFPS)
            {
            long t2=System.currentTimeMillis();            
            if(t2-t1>0)g.drawString("Fps:"+runTimes*1000/(t2-t1),5,5,Style.LT);            
            }
            runTimes++;
            if(GameMIDlet.showMem)
            {
            g.drawString("Total memory:"+Runtime.getRuntime().totalMemory(),5,20,Style.LT);
            g.drawString("Free memory:"+Runtime.getRuntime().freeMemory(),5,35,Style.LT);
            }
            //g.drawString("Threads="+Thread.activeCount(),5,50,Style.LT);            
            
            flushGraphics();
            isDrawing=false;
        }
    }

    protected void keyRepeated(int keyCode)
    {
        int gameAction = KeyMapping.getGameKey(keyCode);
        if (gameAction != 0) {
            int bit = 1 << gameAction;
            this.keyStates |= bit;
            this.releasedKeys &= ~bit;
        }
        
        if(controller!=null)
            controller.keyRepeated(keyCode);
    }
    protected void keyPressed(int keyCode)
    {
        
        int gameAction = KeyMapping.getGameKey(keyCode);
        if (gameAction != 0) {
            int bit = 1 << gameAction;
            this.keyStates |= bit;
            this.releasedKeys &= ~bit;
        }
        
        if(controller!=null)
            controller.keyPressed(keyCode);
    }

    
    
    private void input()
    {
        //System.out.println("检测输入开始");
        int keyStates = getKeyStates();

        if(runStatus==Canvas1.STATUS_WALK)
        {
            if ((keyStates & LEFT_PRESSED) != 0)
            {                
                GameMIDlet.mainRole.changeDirect(MainRole.DIR_LEFT);
                GameMIDlet.mainRole.setWalk(true);               
            }else
            if ((keyStates & RIGHT_PRESSED) !=0 )
            {               
                GameMIDlet.mainRole.changeDirect(MainRole.DIR_RIGHT);
                GameMIDlet.mainRole.setWalk(true);               
            }else
            if ((keyStates & UP_PRESSED) != 0)
            {               
                GameMIDlet.mainRole.changeDirect(MainRole.DIR_UP);
                GameMIDlet.mainRole.setWalk(true);              
            }else
            if ((keyStates & DOWN_PRESSED) !=0)
            {             
                GameMIDlet.mainRole.changeDirect(MainRole.DIR_DOWN);
                GameMIDlet.mainRole.setWalk(true);             
            }
            
            if ((keyStates & LEFT_PRESSED) == 0 && (keyStates & RIGHT_PRESSED) ==0 && (keyStates & UP_PRESSED) == 0 && (keyStates & DOWN_PRESSED) ==0)
            {
                GameMIDlet.mainRole.setWalk(false);
            }
            GameMIDlet.mainRole.move();
        }


        //System.out.println("检测输入结束");
    }
    /*
    private void toBattle(int enemyType)
    {
        battleCanvas=new BattleCanvas("battle",disp,this);
        battleCanvas.setEnemyType(enemyType);  //设置明雷或暗雷        
        stop();        
        inBattle=true;        
        if(enemyType==0)
        {
        Timer timer=new Timer();
        TimerTask timerTask=new TimerTask()
        {
            public void run()
           {
            battleCanvas.init();
            battleCanvas.start();
            disp.setCurrent(battleCanvas);
           }
        };
        timer.schedule(timerTask,0);
        }
        else
        {
            battleCanvas.init();
            battleCanvas.start();
            disp.setCurrent(battleCanvas);
        }
        System.gc();
    }
    */
    /*
    public void outBattle()
    {        

        if(GameMIDlet.mainRole.isCanTouchMine())
        {
        MyRandom myRandom=new MyRandom();
        myRandom.setMinInt(-20);
        myRandom.setMinInt(20);
        GameMIDlet.mainRole.setMineTimeCounter(SceneLib.scenes[SceneLib.currentSceneIndex].getMineTimerCounter()+myRandom.nextInt());
        }

        GameMIDlet.mainRole.setShowExcalMark(false);
        inBattle=false;
        if(enemyFactory!=null)enemyFactory.startAutoMove();
        if(npcFactory!=null)npcFactory.startAutoMove();
        start();
        disp.setCurrent(this);
        battleCanvas=null;
        GameMIDlet.midlet.stopBattleSound();
        GameMIDlet.midlet.playSound();
        GameMIDlet.mainRole.clearUpData();  //清除升级显示信息
        System.gc();
    }
    */
    
    //初始化任务界面
    public void initMissionTab()
    {
        int w=150;
        int h=150;
        int x=(this.width-w)/2;
        int y=(this.height-h)/2;
        if(missionTab!=null)missionTab.removeAll();
        missionTab=null;
        
        if(missionTab==null)
        {
        	missionTab=new MissionTab();
        	missionTab.setTabName(new String[]{" 任务 "});
        	missionTab.setTabIndex(0);
        	missionTab.setBgColor(Style.bgColor2);
        	missionTab.setHighLightColor(Style.highLight);
        	missionTab.setPosition(x,y);
        	missionTab.setW(w);
        	missionTab.setH(h);
            Vector missionVC = GameMIDlet.mainRole.getMissionVC();
            
            for(int i=0; missionVC!=null && i<missionVC.size(); i++)
            {                
                if(((Mission)missionVC.elementAt(i)).getStatus()==Mission.STATUS_MISSION_DOING)
                missionTab.addElement((Mission)missionVC.elementAt(i));
            }            
        }
    }
    
    /*
    public void flushGraphics()
    {
        repaint();
        serviceRepaints();
    }
  
    protected void paint(Graphics g)
    {
       g.drawImage(screenImg,0,0,Style.LT);        
    }
    */
    
    /*
    TimerTask timerTask;
    Timer timer;
    Box fadeOutBox;
    public void fadeOut()
    {
        inBattle=true;

        fadeOutBox=new Box();
        fadeOutBox.x=width/2;
        fadeOutBox.y=height/2;
        fadeOutBox.w=0;
        fadeOutBox.h=0;

        timerTask=new TimerTask()
        {
            public void run()
            {
                doFadeOut();
            }
        };
        timer=new Timer();
        timer.schedule(timerTask,0,20);
        battleCanvas=new BattleCanvas("battle",disp,this);
    }
    private void doFadeOut()
    {
        fadeOutBox.w=fadeOutBox.w+width/10;
        fadeOutBox.h=fadeOutBox.h+height/10;
        fadeOutBox.x=width/2-fadeOutBox.w/2;
        fadeOutBox.y=height/2-fadeOutBox.h/2;

        if(fadeOutBox.w>width+width/10 && fadeOutBox.h>height+height/10)
        {
            timer.cancel();
            fadeOutBox=null;
            toBattle();
        }
    }
    */
    class Loader extends Thread
    {
        public void run()
        {
            doLoadScene();
        }
    }    
    
}

⌨️ 快捷键说明

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