自定義附帶傳送參數事件

建構事件

package
{
	import flash.events.Event;
	public class MuseumEvent extends Event
	{
		public static const CHANGE_ROOM:String = "CHANGE_ROOM";
		public var data:Object;
		public function MuseumEvent(_type:String, _bubble:Boolean = false , _object:Object = null)
		{
			super(_type, _bubble, false);
			data = _object;
		}
	}
}

使用事件

// 收
this.addEventListener(MuseumEvent.CHANGE_ROOM,OnChangeRoom);

// 發
dispatchEvent(new MuseumEvent(MuseumEvent.CHANGE_ROOM,true,{room:"LOBBY"}));

// 執行
function OnChangeRoom(evt:MuseumEvent){trace(evt.data.zoom);}

Kinect for AS3 錯誤說明

[ 1 ] Question :
error on accept<> for data, exit data thread. 10093

[ 1 ] Solution :
關閉重複開啟的 as3-server.exe

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

使用 DataGrid

建立一個 DataGrid

import fl.controls.dataGridClasses.DataGridColumn;

//------------------------------------------------------------| 宣告欄位的名稱

var ID:DataGridColumn = new DataGridColumn("ID");
var time:DataGridColumn = new DataGridColumn("time");
var captionAb:DataGridColumn = new DataGridColumn("captionAb");
var captionCh:DataGridColumn = new DataGridColumn("captionCh");

//------------------------------------------------------------| 更改欄位的標籤

ID.headerText = "ID";
time.headerText = "時間";
captionAb.headerText = "原文";
captionCh.headerText = "中文";

//------------------------------------------------------------| 設定欄位的寬度

ID.width = 40;
time.width = 40;
captionAb.width = 250;
captionCh.width = 150;

//------------------------------------------------------------| 設定排序方式

ID.sortOptions = Array.NUMERIC;

//------------------------------------------------------------| 將欄位指定給 DtaGrid

var dgCols:Array = [ID, time,captionAb,captionCh];
caption_dg.columns = dgCols;

//------------------------------------------------------------| 新增資料

caption_dg.addItem(
{
    ID:i+1,
    time:CaptionInfo.captions_time[i],
    captionAb:CaptionInfo.captions_captionAb[i],
    captionCh:CaptionInfo.captions_captionCh[i]
});

常用的事件

項目點選時

fl.events.ListEvent.ITEM_CLICK

項目變更時

flash.events.Event.CHANGE

關於外部類別

若是一直出現 1172: 找不到定義 fl.controls.dataGridClasses。之類的錯誤的話

可以試著把組件拉到主場景上然後再刪掉該組件, 讓元件庫裡面有該組件會用到的元件即可

主場景
import Code.MicrophoneManager;
var MM:MicrophoneManager=new MicrophoneManager();
// 記得要把 MM 丟上舞台才會出現, 若沒有 addChild 就看不到
this.addChild(MM);

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;
      }
    }
  }
}

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