<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      Java究竟怎么玩?

      天地程序已定棋,人間大數(shù)待變局

        博客園  :: 首頁  :: 新隨筆  :: 聯(lián)系 :: 訂閱 訂閱  :: 管理
      在現(xiàn)代,摒棄傳統(tǒng)的會話方式,很多的圖形廣告或游戲采用了[逐字打印]的效果來展示文字,當然,這樣做的目的無非是為了突出內(nèi)容或吸引眼球。

      但是這種實現(xiàn)方式卻是值得借鑒的,以下,我給出一個JAVA實現(xiàn)的簡單用例,需要者可以自行擴充。

      代碼實現(xiàn):

      package org.test;

      import java.awt.Color;
      import java.awt.Font;
      import java.awt.Frame;
      import java.awt.Graphics;
      import java.awt.Image;
      import java.awt.Panel;
      import java.awt.image.BufferedImage;

      import org.loon.framework.game.helper.ImageHelper;

      /**
       * <p>
       * Title: LoonFramework
       * </p>
       * <p>
       * Description:JAVA實現(xiàn)對話逐字打印(由Loonframework提供)
       * </p>
       * <p>
       * Copyright: Copyright (c) 2007
       * </p>
       * <p>
       * Company: LoonFramework
       * </p>
       * 
       * 
      @author chenpeng
       * @email:ceponline@yahoo.com.cn
       * 
      @version 0.1
       
      */


      public final class WriterType extends Panel implements Runnable {
          
      // 最大對話數(shù)
          private int _MAX_COUNT = 10;

          
      //間隔標記
          private char _flag='|';
          
          
      private Image _screen;

          
      private Graphics _bg;

          
      private Thread _L_WriterType;

          
      private static Color _L_fClr;

          
      private static Color _L_bClr;

          
      private static String _M_Text[];

          
      private int _S_COUNT;

          
      private Font _L_TTF;

          
      private int _L_Speed;

          
      private int _L_Delay;

          
      private String _C_Text[];

          
      private static int _L_COUNT;

          
      private static int _F_COUNT;
          
          
      private static int _T_COUNT;

          
      private static int _N_Text;

          
      private String _FontName;

          
      private final static int _WIDTH = 500;

          
      private final static int _HEIGHT = 375;

          
      private static int _FontStyle;

          
      private static int _FontSize;

          
      private static  Image _back = null;

          
      /**
           * 
           
      */

          
      private static final long serialVersionUID = 1L;

          
      private boolean _isRun;

          
      /**
           * 析構函數(shù),注入背景圖,循環(huán)顯示的文字數(shù)組,速度,延遲
           * 
      @param img
           * 
      @param strContent
           * 
      @param speed
           * 
      @param delay
           
      */

          
      public WriterType(Image img,String[] strContent, int speed, int delay) {
              init(img,strContent, speed, delay);
          }


          
      private WriterType() {

          }


          
      public void init(Image img,String[] strContent, int speed, int delay) {
              
      //初始背景色
              setBackground(Color.BLACK);
              
      // 原始對話信息
              _M_Text = new String[_MAX_COUNT];
              
      // 緩存對話信息
              _C_Text = new String[_MAX_COUNT];

              _back
      =img;
              _FontName 
      = "宋體";

              _FontStyle 
      = 0;

              _FontSize 
      = 15;

              _L_TTF 
      = new Font(_FontName, _FontStyle, _FontSize);
              _L_bClr 
      = Color.BLACK;
              _L_fClr 
      = new Color(250250250);

              
      int length = strContent.length;

              
      // 循環(huán)次數(shù)
              _N_Text = strContent.length - 1;

              
      // 直接copy String數(shù)組
              System.arraycopy(strContent, 0, _M_Text, 0, length);

              
      //速度及延遲設定
              _L_Speed = speed;
              _L_Delay 
      = delay;
              
              
      //緩存區(qū)域
              _screen = new BufferedImage(_WIDTH, _HEIGHT, 1);
              _bg 
      = _screen.getGraphics();

              
      //開啟線程
                  _isRun = true;
                  _L_WriterType 
      = new Thread(this);
                  _L_WriterType.start();
              
          }


          
      /**
           * 停止線程
           *
           
      */

          
      public void stop() {
              _S_COUNT 
      = 0;
              _L_COUNT 
      = 0;
              _F_COUNT 
      = 0;
              
      if (_L_WriterType != null{
                  _isRun 
      = false;
                  _L_WriterType 
      = null;
              }

          }


          
      /**
           * 繪制圖形
           
      */

          
      public void paint(Graphics g) {
              _bg.setColor(_L_bClr);
              _bg.fillRect(
      00, _WIDTH, _HEIGHT);
              _bg.setColor(_L_fClr);
              _bg.setFont(_L_TTF);
              _bg.drawImage(_back, 
      00this);
              
      for (int i = 0; i <= _L_COUNT; i++{
                  
      //轉(zhuǎn)換當前字體top位置
                  Double top = new Double((double) _FontSize
                          
      * (3.0D + 2.0D * (double) i));
                  
      if (_C_Text[i] != null{
                      _bg.drawString(_C_Text[i], 
      50, top.intValue());
                  }

              }


              g.drawImage(_screen, 
      00this);
          }


          
      /**
           * 圖形變更
           
      */

          
      public void update(Graphics g) {
              paint(g);
          }


          
      /**
           * 重新開始
           *
           
      */

          
      private void begin() {
              
      //清除所有緩存數(shù)據(jù)。
              for (int i = 0; i < _C_Text.length; i++{
                  _C_Text[i] 
      = null;
              }

              _F_COUNT 
      = 0;
              _S_COUNT 
      = 0;
              _L_COUNT 
      = 0;
              _T_COUNT
      ++;
              
      if (_T_COUNT > _N_Text) {
                  _T_COUNT 
      = 0;
              }

              repaint();
          }


          
      public void run() {
              
      while (_isRun) {
                  
      try {

                      
      //字符串累加
                      _S_COUNT++;
                      
      //當字符串完成整段對話時
                      if (_S_COUNT == _M_Text[_T_COUNT].length()) {
                          _C_Text[_L_COUNT] 
      = _M_Text[_T_COUNT].substring(_F_COUNT,
                                  _S_COUNT);
                          begin();
                          Thread.sleep(_L_Delay);
                          repaint();
                      }

                      
      //比對標識設定緩存對話
                      if (_M_Text[_T_COUNT].charAt(_S_COUNT) != _flag) {
                          _C_Text[_L_COUNT] 
      = _M_Text[_T_COUNT].substring(_F_COUNT,
                                  _S_COUNT)
                                  
      + "_";
                      }
       else {
                          _C_Text[_L_COUNT] 
      = _M_Text[_T_COUNT].substring(_F_COUNT,
                                  _S_COUNT);
                      }

                      
      //用以分辨是否轉(zhuǎn)化對話組時的不同延遲
                      boolean shortSleep;
                      
      //當'|'標識存在時執(zhí)行
                      if (_M_Text[_T_COUNT].charAt(_S_COUNT) == _flag) {
                          _L_COUNT
      ++;
                          _S_COUNT
      ++;
                          _F_COUNT 
      = _S_COUNT;
                          shortSleep 
      = true;
                      }
       else {
                          shortSleep 
      = false;
                      }

                      
      //刷新
                      repaint();
                      
      //判斷速度
                      if (!shortSleep) {
                          Thread.sleep(_L_Speed);
                      }
       else {
                          Thread.sleep(
      10 * _L_Speed);
                      }

                  }
       catch (InterruptedException e) {
                      stop();
                  }

              }

          }

          
          
      public int getMaxCount() {
              
      return _MAX_COUNT;
          }


          
      public void setMaxCount(int max_count) {
              _MAX_COUNT 
      = max_count;
          }


          
      public static void main(String[] args) {
              String[] abracadabra 
      = new String[] {
                      
      "身為劍體,|鋼鐵之血灼璃之心.|手創(chuàng)千劍,身經(jīng)百戰(zhàn);|無一敗績,無一知己.|常一人自醉于劍丘之巔;|此生亦無任何意義;|故此身,定為無限劍成;|故此命,定為無限劍制.",
                      
      "I am the bone of my sword;|Steel is my body, and fire is my blood.|I have created over a thousand blades.|Have withstood pain to create many weapons.|Yet,those hands will never hold anything.|So as I pray, unlimited blade works." }
      ;
              Frame frm 
      = new Frame();
              frm.setTitle(
      "Java圖形程序中的對話逐字顯示(由Loonframework提供)");
              frm.setSize(_WIDTH, _HEIGHT 
      + 20);
              frm.setResizable(
      false);
              frm.add(
      new WriterType(ImageHelper
                      .loadImage(
      "d:/back.jpg"true),abracadabra,50,5000));
              frm.setVisible(
      true);
          }




      }


      本例自動循環(huán)String數(shù)組中所有數(shù)據(jù),每行顯示對話由'|'標記分割,背景圖如下:



      效果圖1如下:


      效果圖2如下:
      posted on 2007-10-20 08:41  cping  閱讀(303)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 377P欧洲日本亚洲大胆| 遂昌县| 亚洲欧洲∨国产一区二区三区| 久久精品国产亚洲AⅤ无码| 美女一区二区三区亚洲麻豆| 国产不卡一区不卡二区| 松潘县| 久久久国产成人一区二区| 强开少妇嫩苞又嫩又紧九色| 天台县| 亚洲国产成人va在线观看天堂| 鲁丝片一区二区三区免费| 亚洲中文字幕无码av永久| 亚洲欧洲美洲在线观看| 国产一区二区三区不卡视频| 亚洲成在人线在线播放无码| 亚洲综合成人av在线| 国产精品午夜无码AV天美传媒 | 苏尼特右旗| 亚洲综合一区二区三区在线| 亚洲av一区二区在线看| 国产私拍大尺度在线视频| 国产成人一区二区免av| 各种少妇wbb撒尿| 99久久久国产精品免费无卡顿| 亚洲精品麻豆一二三区| 亚洲成人精品一区二区中| 亚洲亚洲人成综合网络| 欧美18videosex性欧美tube1080 | 国模肉肉视频一区二区三区 | 亚洲一区二区精品动漫| 鹤庆县| 999精品全免费观看视频| 玩弄人妻少妇500系列| 亚洲国产精品日韩专区av| 九九在线精品国产| 国产真正老熟女无套内射| 国产午夜精品久久精品电影| 国产精品第一页一区二区| 视频一区视频二区制服丝袜| 国产精品中文字幕av|