2010年4月26日 星期一

Singleton Pattern For ActionScript3,AS3 獨體模式

§ 獨體模式
獨體 (singleton)
  • 簡單的說就是讓某類型物件具有唯一性的存在一個程式專案中,即該程式中不能產生兩同類型的實體。
為什麼需要獨體功能呢?我們來用幾個自然界的例子來說明
  • 動物,每一個動物,只能有一個大腦,如果有兩個大腦,不知誰才是真正的管理者。
  • 交通工具,每一單位交通工具,同一時間內只能接受來自一個駕駛者所給予的操作指示,如飛機雖有正副機長,但同時只能有一位機長操作飛機動作行為。


當然不只這情境,還許有多種狀況下須要使用到獨體模式


Example:
package patterms
{
    public class Steering
    {
         private static var _steeringInstance:Steering;
         public function Steering(enforcer:SteeringEnforcer )
        {
            trace("建構子");
        }


        public static function getInstance(id:int):Steering
       {
       //判斷實體是否已經存在
           if(_steeringInstance == null)
           {
               trace( "id" + id + "實體不存在,產生實體" );
               _steeringInstance = new Steering(new SteeringEnforcer( ) );
           }


            trace( "id" + id + "實體存在,傳回實體" );
            return _steeringInstance;
         }


          public function turnRight():void
          {
              trace( "右轉" );
          }


          public function turnLeft():void
         {
             trace( "左轉" );
         }
      }
}
//內隱Class
class SteeringEnforcer
{
}
 
// 程序執行
Steering.getInstance(0);
Steering.getInstance(1).turnLeft();
 
//trace結果
id0實體不存在,產生實體
建構子
id0實體存在,傳回實體
id1實體存在,傳回實體
左轉

2010年4月24日 星期六

ActionScript3 Sprite 特性

Sprite的特性


  • SpriteWidthHeight屬性是來自於繼承鍊中的抽象父類別DisplayObject
  • DisplayObject只是個抽象的顯示物件(他不能實體化)他的Width與Height是用來形容任何繼承他的顯示物件的長寬。
  • Sprite是一個容器,其容器的長、寬是由子顯示物件的長寬來決定。(容器是拿來裝東西的,所以其長寬當然是看裝的東西的位置與長寬來決定)。


下例Sprite的Width直接給予數值會改變其Scalx來因應改變......
  200 x = 300 ;  x = 300 / 200

Example:

2010年4月18日 星期日

拖曳基礎原理,AS3

顯示元件拖曳基礎原理
Fundamentals of Drag for DisplayObject.


基本觀念:
  • 會使用mouseDown、mouseMove、mouseUp,三個事件。
  • mouseDown時記錄住滑鼠在Stage上的座標,並加入mouseMove與mouseUp事件偵聽。
  • 當mouseMove時使用新的滑鼠座標減去mouseDown時座標求得offset。
  • 將拖曳對像的座標+offset。
  • mouseUp發生時移除mouseMove,與mouseUp事件偵聽。
以FB4來撰寫範例:
example:

深入淺出SQL閱讀整理一

第一章 資料與表
  • 關聯式資料庫管理系統(relational database management system , RDBMS)。
  • 資料庫(database , DB):存有資料表與其他相關SQL結構的容器。
  • 資料表(table)      :由資料欄與資料列構成。
  • 資料欄(column) : 儲存資料表理的一塊資,常以field表之。"垂直方向"
  • 資料列(row)      :一組能形容某項事務的欄位集合,常以record表之。"水平方向"

建立資料庫
[command] [target];
CREATE DATABASE  yourDataBaseName;
example:
CREATE DATABASE  my_friend_db;
  • SQL資料庫或資料表的名稱,不可出現空格,請以底線代替空格。
  • 指令敘述以;號結尾。
  • SQL本身不區分大小寫,但指令大寫是優良的設計慣例,某些資料庫要求關鍵字大寫。
使用資料庫
USE  yourDataBaseName;
example:
USE my_friend_db;



建立資料表
CREATE TABLE yourTableName
(
   columnNameN   dataType  ,
               .
               .
  columnName(N+1)  dataType
);
example:
CREATE TABLE my_friend_list;
(
   last_name VARCHAR(20),   
   first_name VARCHAR(20),
   email VARCHAR(50),
   birthday DATE,
   profession VARCHAR(50)
);
  • 若不想欄位接受null,則在DataType後面加上NOT NULL即可,例 last_name VARCHAR(20) NOT NULL。
  • 若是想要有預設值 DEFAULT yourValue
檢視資料表
DESC yourTabelName;
example:
DESC my_friend_list;

查詢結果













資料表中加入資料
INSERT INTO yourTableName
(
  columnName1 dataType , columnName2 dataType,  .....
)
VALUES
(
   value1 , value2,......
);
example:
INSERT INTO my_friend_list
(  
  last_name ,  first_name ,  email  ,  birthday ,  profession
)
VALUES
(
   'Tsai',   'Jeffrey',   'jeffrey@gmail.com,   '1978-11-20',   'Programmers'
);
  • 在VALUES中若是對應欄位的dataType是屬於字元、文字、日期都必需使用'單引號。
  • 資料欄順序必須對應值得順序。
  • INSERT INTO敘述可以不依Table理的欄位順序打入,但記得值順序需要對應欄。
  • 可以省略資料欄名稱列表,但資料值必須全部填入,而且資料值順序必須與Table裡完全一樣。
資料格式(DataType)
  • CHAR或CHARACTER:字元,嚴謹須先設定好長度。
  • VARCHAR:儲存文字,最大255字元,很有彈性,會配合資料長度調整大小。
  • DEC或DECIMAL:小數。
  • DATETIME或TIMESTAMP:紀錄日期與時刻。
  • DATE:只記錄日期。
  • INT或INTEGER:整數。
  • BLOB:紀錄大量文字資料。
查詢資料表內容
SELECT * FROM yourTableName;
example:
SELECT * FROM my_friend_list;
*字號代表選擇每個欄位。
 
 
刪除資料表
DROP TABLE yourTableName;
example:
DROP TABLE my_friend_list;
  • 刪除前務必注意與小心,避免刪錯。
指令彙整:
建立資料庫
CREATE DATABASE yourDataBaseName;

使用資料庫
USE yourDataBaseName;

建立資料表
CREATE TABLE yourTableName( columnName1 dataType , columnName2 dataType  .......);

檢視資料表
DESC yourTabelName;

資料表中加入資料
INSERT INTO yourTableName( columnName1 dataType , columnName2 dataType, .....)
VALUES( value1 , value2,......);

查詢資料表內容
SELECT * FROM yourTableName;

刪除資料表
DROP TABLE yourTableName;