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;

2010年2月24日 星期三

Flash的Label於Flex使用

因專案關係,需將flash繪製之swf給予Flex使用,Flex使用反射機制將swf內之元件反射出Class使用,但該元件使用到flash之Label,flash之Label使用fl.controls.Label,而Flex之Label是屬於mx.controls,兩者不相同,無法用來轉型操作。

可以使用一個非正規的偷懶方如下:

假設有一變數flashLabel型態為DisplayObject並且以參照了flash的Label
那麼可以非正規使用

if( (flashLabel as Object).hasOwnProperty("text"))
(flashLabel as Object).text = "SJ";

那麼我想因該是可以使用反射機制來取得Class來操作吧!有空再來試驗一下!

localToGlobal in Flex

localToGlobal空間座標轉換
<?xml version="1.0" encoding="utf-8"?>
<mx:Application applicationComplete="init();" xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">
<mx:Script>
<![CDATA[
private function init():void
{
trace("x="+contrastA.x +" , "+"y="+contrastA.y); //0,0
trace("x="+contrastB.x +" , "+"y="+contrastB.y); //0,0
trace("x="+contrastC.x +" , "+"y="+contrastC.y); //0,0
trace("-----------");
var p1:Point , p2:Point , p3:Point;

globalToLocal in Flex

globalToLocal座標空間轉換
<?xml version="1.0" encoding="utf-8"?>
<mx:Application applicationComplete="init();" xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" >
<mx:Script>
<![CDATA[
import mx.containers.Panel;
private function init():void
{
     var p:Point;
    //將btn所在的空間座標轉換成c1上的對應空間座標
     p = c1.globalToLocal(new Point(btn.x , btn.y));
     l.x = p.x;
     l.y = p.y;
}

弧度角度換算

弧度角度換算
radian(弧度)
degree(角度)
PI(圓周率)

360度(角度) = 2PI
180度(角度) = 1PI
90度(角度) = 1/2 PI

PI ~= 3.1416個弧  = 180度角
一圓 = 2PI 約(6.2832弧)

(一個弧 = 57.2958角度)
180 / 3.1416 = 57.2958角度

 
角度轉弧度
radians  = degrees * (Math.PI / 180)

(3.1416 / 180) = 一單位角度代表的弧度量

弧度轉角度
degress = radians * (180 / Math.PI)

(180度角 / 3.1416) = 一單位弧代表的角度量