載入進度 ProgressEvent

 

package
{
  import flash.display.*;
  import flash.events.*;
  import flash.net.*;
  public class ProgressBar_Example extends Sprite
  {
    private var loader:Loader=new Loader;
    private var path:String="test.jpg";
    public function ProgressBar_Example()
    {
      // 載入時
      loader.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS,onProgress);
      
      // 載完時
      loader.contentLoaderInfo.addEventListener(Event.COMPLETE,onComplete);
      
      // 實體化
      addChild(loader);
      
      // 載入檔案
      loader.load(new URLRequest(path));
    }
    
    // 載入時

    private function onProgress(evt:ProgressEvent):void
    {
      // 已經載入的 bytes 量
      var loaded:Number = evt.bytesLoaded;
      
      // 需要載入的 bytes 量
      var total:Number = evt.bytesTotal;
      
      // 載入百分比
      var percentage:Number = Math.floor(loaded / total * 100);
      
      trace("讀取進度 : "+loaded + "/" +total + " 讀取百分比:"+percentage+" %");
    }
    
    // 載完時

    private function onComplete(evt:Event):void
    {
      trace("讀取完成");
    }
  }
}

 

ComboBox 欄位與下拉選單的文字設定

假如說我今天要修改 ComboBox 裡面的文字格式要怎麼辦呢 ?
試試以下的方法吧:

import flash.text.TextFormat;

var TF:TextFormat = new TextFormat();
TF.size = 12; // 其他文字的格式設定也是依此類推...

// 設定 ComboBox 那個欄位的字 <註一>
ComboBox_cb.setStyle("textFormat",TF);

// 設定 ComboBox 開啟後的選單
ComboBox_cb.dropdown.setRendererStyle("textFormat",TF);

————————————————————————————————

註一:
這邊原本是用

ComboBox_cb.textField.setStyle("textFormat",TF);
但很容易就變回原形了
所以直接改成下面這樣就沒問題了

ComboBox_cb.setStyle("textFormat",TF);

文字欄位的文字新增位置

假如說我們今天有一段文字想加入原本的文字裡,可能會有下列情況

  • 加在前面
  • 加在後面
以下分別針對各種不同的情況做說明:

首先先設定好環境

package
{
  import flash.display.Sprite;
  import flash.display.Stage;
  import flash.text.*;
  import flash.events.*;
  public class TextTest extends Sprite
  {
    public function TextTest()
    {
      Button_1_btn.addEventListener(MouseEvent.CLICK,onClick);
      Button_2_btn.addEventListener(MouseEvent.CLICK,onClick);
    }
    public function onClick(evt:MouseEvent):void
    {
      switch (evt.target.name)
      {
        case "Button_1_btn" :
          output_txt.text=input_txt.text+"\n"+output_txt.text;
          break;
        case "Button_2_btn" :
          output_txt.appendText(input_txt.text+"\n");
          break;
      }
    }
  }
}

使用方法:
  在上面的輸入欄位輸入文字
  然後在右邊的按鈕選擇動作
  下面的輸出欄位會顯示文字

替代 IOErrorEvent 事件中 errorId 的方法

因為 errorId 只能在 Adobe AIR 裡面用
所以如果想知道
errorId 的話可以用下面的方法來做:

theError_ldr.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler);
function ioErrorHandler(evt:IOErrorEvent):void
{
  var errorTargetName:String=evt.target.name;
  // trace(evt.target.name) >>> theError_ldr
  var defaultURL:String="Picture/System/sample.jpg";
  var errorId:String=evt.text.slice(7,11);

  /*
    trace(evt.text); 的話會出現
    Error #2035: 找不到 URL。
    URL: file:///D|/工作室/0031%5F線上測驗/student/Picture/99/20-1.jpg

    這個時候我們取從第 7 個字後開始到第 11 個字結束
    也就是 Error #2035: 找不到 URL。...
    剛好他就是我們要的 ID
    這樣一來就可以針對 errorID 用 switch 來判斷各種不同的錯誤要做哪些事情了
  */

  switch (errorId)
  {
    case "2035" :
      trace("錯誤代碼是 : "+errorId);
      pictureRequest.url=defaultURL;
      this[errorTargetName].load(pictureRequest);
      break;
  }
}