2010年9月27日 星期一

Flex 使用fxg

要在Flash CS5內將圖檔輸出成fxg檔案,供Flex使用,以下步驟流程

一.Flash FXG輸出

在Flash上繪製圖片,可繪製多個物件同時輸出,Export Image,
選擇fxg格式,即自動產生FXG File
如果flash內的物件有使用到外部的圖檔,那麼在輸出fxg檔案的同時,
會產生一個asset目錄,包含外部點陣圖檔案
例如MyBall.fxg
在所輸出的fxg檔案內可看到
 1.<Graphic viewWidth viewHeight>:  
     <Graphic>為fxg document的root node,viewWidth   
     viewHeight即為flash所設定的stage大小  
 2.<Library>:當場景上有多個物件會被定義到Libray內,  
     可以重複使用裡面所定義的物件       

二.放置到Flex可連結到的目錄
可將輸出的fxg檔案放置到Flex對應的class Path內
例如 com/ozzysun/flex/fxg/MyBall.fxg
就可把fxg看作在nameSpace com.ozzysun.flex.fxg下的一個物件類別

FXG本身是一個獨立的文件,其內部不可參考到別的fxg或mxml檔案
但可以連結到點陣圖或是系統字型

三.在Flex Application使用fxg物件

fxg物件只能被加到spark container內,不能加到mx container內
  <s:Application backgroundColor="0xFFFFFF"     
    xmlns:s="library://ns.adobe.com/flex/spark"  
    xmlns:oz="com.ozzysun.flex.fxg.*">  
      <oz:MyBall id="graphic1"/>  
   </s:Application>  

四.在ActionScription上使用fxg物件

在AS中fxg物件會被當作是park.core.SpriteVisualElement物件
並使用addElement加到spark container內

var _item:SpriteVisualElement=new MyBall();
vGroup.addElement(_item);

五.FXG Document語法架構

fxg檔案以當作文件的根節點,下面可包含0~多個container(如Group)
或繪圖元素(如Rect,Ellipse,BitmapImage)
根節點下可以包含有,若有,一定要放在其他tag之前
如果這兩個tag都有,那就把放在第一位

六.FXG的座標與大小控制

fxg使用可以使用兩種座標系統,document coordinater與user coordinater
document coordinater是以整個輸出的swf左上方為參考點
user coordinater則是以這個fxg document的tag為參考點
預設fxg內部元素都會使用user coordinater

每個fxg內部元素都會有width height屬性可以設定,而在根節點上的
viewWidth viewHeight為整個fxg元件大小,如果內部元素寬高小於viewWidth viewHeight
就會出現空白間距

2010年9月23日 星期四

颱風 回家

高鐵左營站擠滿了要北上的乘客
坐在車廂裡看個車子緩緩的移動

早上8點半,硬是把還在睡覺的這對母女挖起來
妹妹張開眼笑笑後,還是繼續抱著被子翹著屁股賴床
好不容易讓他有點醒過來的感覺
就要出門坐車

這個假日自己一個人要把妹妹帶回高雄
塞滿的背包裡除了自己的筆電
還多放了妹妹的畫板 還有那黃色的小鴨鴨
一桶的小饅頭餅乾 一瓶泡好的牛奶再加上一瓶水
我們在回家的路上

南下列車 車廂沒有坐滿
跟妹妹在最後一排的座位上 一路玩回左營
坐計程車回家,車進巷子內
遠遠看到老媽就在門口等著我們回來
還沒下車
看到遠遠的阿嬤
妹妹就阿嬤阿嬤的叫著

妹妹還是跟在台北一樣 精神超好 不會想睡覺
到樓上 把妹妹的車車拿下來
外面鄰居的小朋友 已經等著跟妹妹玩
果然他回來 一點都沒不適應 想媽媽的問題

禮拜天 雨變大了風也變強了 這是今年第一個有影響的颱風
關在家裡不能出門 看樣子沒辦法回台北
除了睡覺 就是跟妹妹玩
還有就是老媽煮的飯菜 整天吃不停
難得 可以好好的睡一覺
躺在 老家的床上 還是感覺比較溫暖
看著妹妹在調皮搗蛋
老媽也被逗的開心的一直笑著

下午風雨更大了
妹妹吵著要出去
只好把鐵門打開一些
放個小椅子在門口
讓妹妹好奇的看到外面下雨的景象
妹妹 好奇的把腳伸到門外 吹著風淋著雨
臉上盡是開心的笑容

這次的颱風 雨下了一天一夜
家裡的鐵門門柱也被風吹開來
看到新聞才知道 整個高雄受災是如此嚴重

禮拜一早上一早搭計程車到左營
再搭高鐵回台北
坐上車
開始會想念妹妹了
想念他叫爸爸的聲音

2010年9月16日 星期四

PHP Send Mail

$to = 'user@xxx.com' . ', ';
$subject = '信件標題';
$message = '內容';
$headers  = 'MIME-Version: 1.0' . "\n";
$headers .= 'Content-type: text/html; charset=utf-8' . "\n";
$headers .= 'From: sender@xxx.com' . "\n";
if(!mail($to, $subject, $message, $headers)){
    die("send error!");
}else{
    echo "send mail ok!";
} 


如果$from $to $msg資料是透過$_POST或$_GET取得
則需加""處理
mail("$to", "$subject", "$message", $headers)

2010年9月10日 星期五

My Wish List

等我有錢 我就買給你
等我有錢 我就送你~~~
如果有錢我要買~~~
我的Wish List好像越來越長
能實現的機會越來越小

還記得自己幾年前的生活
想要買個電腦,去領個錢就買了
買個PS2 嗯嗯...下個月領薪水就可以買了
需要個硬碟....馬上衝去光華商場敗了下來
離現在最近 敗的奢侈品 大概就是那台
手把已經已經壞掉的Wii了.....還是因為太少在玩
讓電池漏液弄壞手把~~

現在要養家養小孩
生活除了忙 還是忙
假日的娛樂 大概就是去24小時紅茶店寫程式
沒時間玩電動,電影也只能等到小孩睡覺後才能好好看完一部
PS3出來了....看起來我是沒什麼興趣
也許新的XBox360出來 搭配新的Kinect出來 會想體驗看看

想買台Android手機,有個好理由是把自己寫的程式放上去測試
但還是跟自己說,還是等Android2.2出來再買吧...

買個硬碟吧,理由是該把電腦內的資料好好備份下來
家裡那台用了5年的電腦也該換了

再買台AIO的觸控電腦送給老爸吧....
現在老爸對電腦這麼有興趣在學
那麼大的AIO電腦,應該會比現在給他用的那台老舊筆電好很多

買台可以看漫畫的平板吧,現在的平板發展已經可以達到我想要
看漫畫的理想了,但是我有時間看嗎

想去日本,又到了有年假又可以看楓紅的季節
但是今年的日圓升值,要存錢去日本,應該是很困難
好想好想~~~~

想買雙勃肯鞋,之前在德國買的勃肯壞了,好想再買一雙
....這大概是最容易實現,也最不會買了有道德愧疚的一個了

今天早上又多了一個大的Wish,想帶著家人到再到德國走走
還要去上次沒去的布拉格...
當然要是妹妹可以很乖的一起出遊的條件下
我想這是現在最大的一個願望吧...

如果哪天真中了統一發票
還是中了樂透
就可以一次都把他完成
現在就先放在口袋裡~~

Flash跨網域JS注意要項

在Flash程式開發應用於網頁上時
常會需要用到與JS的互動,也就是呼叫JS或被JS呼叫
抑或載入外部檔案等,如果發生跨網域的狀況
常會讓工作無法順利執行下去
以下幾點概念可以讓CrossDomain問題,降到最低

1.swf所屬網域,以其所在網頁為準
當你在A網域放了一個網頁A.htm,在這網頁內連結了B網域上的
swf與JS File,如果你在執行的A.htm上的flash有呼叫到了JS上的
function,雖然swf與JS實體檔案同在B domain上,但是在這時候,會被視為非
同一個Domain

2.讓Flash呼叫外部script function
在網頁上嵌入Flash的Tag 有一個參數allowScriptAccess預設值為SameDomain
亦即允許swf與同Domain上的JS做互動,若需要跨網域呼叫執行,則需要將值設定
為always,例如在A Domain上的swf被嵌入到B Domain上的網頁上時,要讓他可以
執行在A Domain上的JS Function,就需要做always設定
但通常在安全性考量,大部分允許讓你貼embed code的網站都會把這個參數忽略掉
而如果要完全不允許flash與script做互動,則可以設定成none

3.讓Flash可以讓script呼叫執行
如果要讓JS可以操作執行Flash內的function
當然是利用ExternalInterface來連結,但若是涉及跨網域的呼叫執行
則需要先在Flash內設定
Security.allowDomain(設定允許的domain)
這樣就可以允許跨網域被呼叫了

4.載入跨網域外部檔案到flash內
要載入非同網域的圖片或檔案到flash內,需要在提供被讀取資料的網站下
放置crossdomain.xml這policy file,然後在flash內使用
Security.loadPolicyFile(policy file路徑),
先讀取,接下來就可以任意的讀取該網站上的資料

2010年9月8日 星期三

高四生活- Just In Time

在自己的記憶裡,重考的那年 像是段空白一般
回想起來只有很瑣碎的片段加片段

高中畢業後 大學聯考沒有考上
似乎不會感覺到是很大的事
因為班上同學幾乎都一起到了補習班重考

黑黃相間的小兜風是每天上課的交通工具
拆掉菜籃與後照鏡,加長了避震器翹起車尾
在車前方裝上紫色霧燈,側邊貼上國旗還有拳四郎的貼紙
改裝過的摩托車,似乎也會讓自己覺得與眾不同
下課後與同學騎到西子灣 十八王公廟
蹺課到國際戲院看2部50塊的二輪電影
還是走過港隧道,到旗津試車,看車可以加速到多快

上課?其實都忘記了在補習班上課的畫面
有印象的是在一堂三民主義課中,新聞傳來蔣經國去世的消息
在那個年代,充滿著有如偉人崩落國家將面臨重大改變的氣息....
那個時候,我正偷偷用隨身聽聽著黃舒駿 馬不停蹄的憂傷
為著他那唱片文案中寫著要擊倒羅大佑這樣自大的話
感到無法苟同
不過在經過這20多年的現在,再聽他的音樂,
雖然覺得還是沒能擊倒羅大佑
但也是一張很棒的國語經典

下課騎車回家,沿著中華路一直走,中山路圓環邊是遠東百貨
每個禮拜總有幾個晚上,會在大門口旁搭起簡單舞台
辦起活動,有時會是安排樂團表演
每回看到有樂團表演,總會直接把摩托車停在旁邊
走到舞台前看著表演
聽眾大多只有三三兩兩
唱著流行歌曲最容易引起台下聽眾的迴響
偶爾可以聽到陌生卻又令人感動的搖滾樂
第一次聽到Chris de Burgh的歌曲,就在這裡
還請主唱幫我寫下那天所唱的歌

Just In Time

還有
The Girl With April In Her Eyes

2010年9月7日 星期二

String轉uint

在開發Flash有color方面的應用
如果要透過使用者由文字欄位輸入的文字,或是由一段文字內容中
parse出要轉成顏色的色碼字串
需要將string轉成uint型別
轉換的方式很簡單,只要字串形式是以0x開頭的都可直接轉換
example
var str:String="0xff0000"
var myColor:uint=uint(str);

使用FlashDevelop 輸出Flex 降低檔案大小設定

在使用FlashDevelop開發Flex專案,完成後常會發現swf檔案大的驚人
以下兩個步驟設定可大幅度降低檔案大小
1.使用Runtime shared Library
Project/Property/Compiler Option/Static Link RSL=false
這步驟就不需要把整個Flex Framwork都Compiler到swf內
大約可以減少500kb檔案大小
2.Build Project選擇release mode輸出
在release mode下輸出,所有trace info都會看不到
但檔案大小大約可以減少一半

使用自訂ItemRenderer

在Flex上使用如TileList的Component,如果不想使用預設的ItemRenderer
要自訂ItemRenderer,以下三個步驟
一.在Component上指定要使用的ItemRenderer完整路徑
 <mx:TileList id="tileList" .....            
      itemRenderer="com.ozzysun.flex.xxx.MyItemRenderer">  
二.設定資料來源
example:
var _array:Array = new Array();
    for each(var node:XML in e.target.xml.elements()){
        if (node.name().localName == "image") {
            var obj:Object = new Object();
            obj.title = node.attribute('title');
            obj.thumb = node.attribute('thumb');            
            _array.push(new ObjectProxy(obj))                        
        }
    }
    var _fileArray:ArrayCollection = new ArrayCollection(_array);
    tileList.dataProvider = _fileArray;

每筆資料可以用一般物件儲存,但在儲存後需用ObjectProxy
包裝後再丟到陣列
dataProvider使用的資料type為ArrayCollection,
所以需透過new ArrayCollection(_array)
取得所要的格式

三.ItemRenderer設計
example:
 <?xml version="1.0" encoding="utf-8"?>  
      <mx:Image source="{data.thumb}" xmlns:mx="http://www.adobe.com/2006/mxml" />       
itemrenderer本身會有一個data property
這data property即對應到dataProvider所傳進來的資料