<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    游戲策劃咨訊
    做一個游戲并不難,難的是做一個好游戲;完美在于積累!

    動畫方面.

    前面的朋友說了動畫的制作,一個動畫是由很多幀組在的.,您說的方法把一幀幀的動畫做成一幅幅的圖象,再一幅幅地載入,這樣做的效率不高.應該把各幅員的動畫放在一起,做成一幅大的圖,加載一幅大圖比加載多幅小圖效率要高,一幅大圖也比多幅小圖容易管理得多.那么怎樣做呢?


    做法和前面朋友說的差不多,關鍵是這個方法:
    drawImage(Image img,dx1,dy1,dx2,dy2,sx1,sy1,sx1,sy1,this)
    其中Image img是來源圖象,
        dx1是目的區域的===左上===頂點的===X====坐標;

        dy1是目的區域的===左上===頂點的===Y====坐標;

        dx2是目的區域的===右下===頂點的===X====坐標;

        dy2是目的區域的===右下===頂點的===Y====坐標;

        sx1是來源區域的===左上===頂點的===X====坐標;

        sy1是來源區域的===左上===頂點的===Y====坐標;

        sx2是來源區域的===右下===頂點的===X====坐標;

        sy2是來源區域的===右下===頂點的===Y====坐標.
    ================================================================
    下面是一個動畫的程序代碼.
    import java.awt.*;
    import java.applet.*;
    public class Seriallmage4 extends Applet implements Runnable
    {
      int SPF;                       //用來表示線程暫停的時間
      int sx,sy;
    /******************************************************************
    sx,sy用來表示來源區域的左上頂點.因為每一幀我們都做成了長是80寬87的圖,再把它們放在一起做成一幅大的圖,
    所以來源區域的右下頂點的坐標等于左上頂點坐標加上長和高.
    式子為:sx+80;sy+87
    ******************************************************************/                     
      Image Animation;              //來源圖象
      MediaTracker MT;              //圖像追蹤器,用來檢查圖像是否完全加載
      Thread newThread;             //新的線程.
      Image OffScreen;              //后臺圖像;
      Graphics drawOffScreen;       //繪制后臺圖像的實體(實例).
    //======================init()函數===========================
      public void init()
      {
         SPF=100;                   //線程暫停的時間是100豪秒,
         MT=new MediaTracker(this); //實體化圖像追蹤器.
         Animation=getImage(getDocumentBase(),"lunisEx.gif");//加載圖像.
    //======================//追蹤圖像=============================
         MT.addImage(Animation,0);  
         try
         {
           showStatus("圖象加載中....");   //在狀態欄中顯示信息
           MT.waitForAll();                //等待加載
         }
         catch(InterruptedException E){}
    //============================================================
         OffScreen=createImage(300,300);  //建立后臺畫面的實體
         drawOffScreen=OffScreen.getGraphics();  //取得后臺畫面的繪制類
      }
    //===========================================================
      public void start()                //start函數
      {
         newThread=new Thread(this);     //建立線程
         newThread.start();              //啟動線程
      }
      public void stop()                 //stop函數
      {
         newThread=null;                 //線程設為null
      }
    //==========================================================
      public void paint(Graphics g)
      {
         drawOffScreen.setColor(Color.green);    //設置后臺畫面的背景色,
         drawOffScreen.fillRect(0,0,300,300);    //畫一次背景,作用是清除后臺畫面,如果背景是一幅畫
    //則要用這幅圖來畫.
         drawOffScreen.drawImage(Animation,20,20,250,250,sx,sy,sx+80,sy+87,this);//在后臺畫面繪制
    //的圖像,
         g.drawImage(OffScreen,0,0,300,300,this);//把后臺畫面畫到前臺畫面
      }
      public void update(Graphics g)
      {
         paint(g);                              
      }
    //====================新動畫循環在此========================50
       public void run()                       
       {
          while(newThread !=null)               //如果線程不等于null
          {
            repaint();                         // 重畫一次.
            try
            {
               Thread.sleep(SPF);              //讓線程暫停
               sx+=80;                         //畫了一次后,改變來源區域,使其到下一幀.
               if(sx==800)                     //我的圖像是一幅800*170的,有兩行,每行十幀,如果sx走到了
    //800就說明播放完第一行了,
               {
                  sy+=85;                      //播放完第一行后,改變來源區域的左上頂點使其跑到第二行.
                  sx=0;
                  if(sy==170)                  //如果播放完第二行后,又讓它回到第一行,
                  {
                     sy=0;
                  }
               }
            }
            catch(InterruptedException E){}
          }
        }

    }
    動畫每秒播放多少幀好呢?
    電影的是每秒24幀,這樣的速度不僅能產生視覺停留,而且讓人感覺到畫面非常流暢.那么是不是我們做游戲也要用這個速度呢?答案是否定的,實際上每秒播放10幀就足已產生視覺停留,如果設置高了會消耗更多的資源.至命的是,有一些手機連每秒10帖都做不到.

    posted on 2005-02-17 18:07 藍色雪焰 閱讀(283) 評論(0)  編輯  收藏 所屬分類: 編程技術
     
    主站蜘蛛池模板: 国产亚洲精品无码专区| 亚洲国产精品自产在线播放| 亚洲AV无码久久精品狠狠爱浪潮| 特级毛片aaaa免费观看| 亚洲成a人片在线观看国产| 在线观看亚洲网站| 亚洲高清偷拍一区二区三区 | 亚洲欧洲精品国产区| 美丽姑娘免费观看在线观看中文版| 亚洲AV无码久久精品色欲| 免费无码一区二区三区| 亚洲一级高清在线中文字幕| 24小时日本在线www免费的| 亚洲天堂2017无码中文| 国产在线19禁免费观看国产| 日本精品久久久久久久久免费| 国产成人精品日本亚洲专区| 两个人的视频www免费| 18gay台湾男同亚洲男同| 最新欧洲大片免费在线| 日韩色视频一区二区三区亚洲| 亚洲国产主播精品极品网红| 182tv免费视频在线观看| 亚洲综合视频在线观看| 四虎www免费人成| 人碰人碰人成人免费视频| 亚洲国产成人久久精品动漫| 欧美大尺寸SUV免费| 四虎影视在线看免费观看| 亚洲高清在线播放| 永久黄网站色视频免费| 91视频免费观看| 亚洲午夜电影一区二区三区| 亚洲AV无码一区二区三区在线观看| 99久久免费国产特黄| 亚洲jjzzjjzz在线观看| 亚洲视频在线免费| 巨波霸乳在线永久免费视频| 污污视频网站免费观看| 亚洲精品免费在线| 久久精品国产亚洲一区二区三区 |