2009年10月15日 星期四

夜- 方向感

凌晨2點,果凍妹終於乖乖的在床上睡著
夜晚的寧靜,該是大地都進入睡眠狀態的時候
我還在電腦螢幕前,竭盡腦力的敲著鍵盤
眼睛有點迷濛,反應思考也慢了下來
昏睡感逐漸侵蝕著我的腦袋
我的身體

一杯熱呼呼的咖啡,在這時候感覺格外溫暖

想到今天在StreetVoice聽到的那首歌

戴上耳機,把音量調到夠大的狀態
按下播放鍵,閉上眼
感受 1976方向感裡,那好聽到讓人起雞皮疙瘩的吉他音線


樂團:1976
專輯:方向感
年份:2000

喜歡灰暗的天氣 這杯咖啡和這一隻煙
妳和我的低調氣氛 是唯一的矛盾
櫥窗裡面的倒影 真的是同樣的兩個人
杯子裡面上昇的氣泡 還是一樣的消失

我並不想成為誰的指南針
也許妳該學習相信 自己的方向感

失蹤很久的鑰匙 原來一直在妳口袋
金屬撞擊的時候 某些部分的我又醒過來
地下道裡安靜的箭頭 終於再也不會迷路了
錯綜複雜的開始 勇往直前的出口

我想往前進 我想往後退 我想轉個圈
我想關上燈 我想閉上眼

我並不想成為誰的指南針
也許妳該學習相信 自己的方向感

2009年9月17日 星期四

Alison - 五股時光




有一天 在Gmail上 看到亮亮的留話
跟我說 聽到一些音樂 忽然想起了我這個已經離開的朋友

那是一段苦悶的時光
就像是黃舒駿"窗"理的小閣樓
躺在三重公寓裡 破舊的彈簧床上
望著天花板 假日外頭光線明亮
我卻不想走出房門

我在工作上是挫敗的 離開了復興南路
躲到與熱鬧台北東區截然不同的五股工業區
這裡是管理嚴謹的傳統產業
沒有msn 沒有下午可以隨時下樓買個咖啡的自由

像是隔離在一個封閉的底層
自由慣的我 有些不能呼吸
疏離感強烈的我 總是靜靜的一個人吃飯
靜靜的在我的座位上 做著我該做的工作
然後 下班 離開

同事 是沒有聲音的一群
也許因為這是傳統公司的氣息,讓大家習慣了這樣
我在安靜中看到許多友善的微笑

那年的七月 我這個部門新人在這裡度過了一個溫暖生日
這裡的祝福我放在心上

我像是個過客
匆匆的來又匆匆的離開

在工作時,我總是戴起耳機進入我的世界
享受心理片刻的自由
亮亮常問我聽些什麼
我說 你聽看看
這是我很喜歡的音樂

Everything But The Girls的這首Alison
就成為記憶與五股連結的一部分

專輯:Acoustic
年份:1992
歌手:Everything But the Girl

2009年8月3日 星期一

我的SimpleLife

2006年冬天的11月,德國已經下起了雪,高雄還是可以穿著短袖的天
開始了失業的生活,也開始適應回到高雄的日子
雖然是自己的家,但已經是10幾年沒有在這,一天過著一天

11月底馬世芳的"地下鄉愁藍調"發行了
在台北買書,不是到重慶南路就是到誠品
現在就覺得博客來真是個方便的地方

騎著摩托車,到家附近的7-11領我的書,看著店門口貼著SimpleLife海報
台北,演唱會,忽然變成了很遙遠又陌生的事
一個沒機會參與的生活

高雄 還是一樣的藍天 白雲 與陽光

2008年冬天的12月,我站在台北華山 SimpleLife現場
短袖的工作服下,襯著黑色的長T,雖然是大太陽下
還是感到微微的寒意,
風和日麗的天氣,到處是音樂聲與歡笑
彷彿 一切都是那麼美好
我坐在大門旁的帳棚內,看著人來來往往

2009年8月,超過36度的高溫,炎熱的太陽 睜不開眼的陽光
我在辦公室裡,耳機裡是Javis Cocker的歌曲
想起了 那個週六的夜晚
坐在草地上 大家一起跟著舞台上的Javis唱著

想起了那天的音樂
想起那天的感動
這是我的SimpleLife

2009年7月20日 星期一

FileReference 檔案大小限制

這幾天在使用Socket做FTP Client測試
發現了一些問題存在
使用FileReference 取得要上傳的檔案,有些較大的檔案在完成
上傳後,在Server端卻看不到檔案
查了一下Reference才發現,原來使用FileReference取得檔案
單一檔案大小限制是100Mb..超過就沒作用了

Flash Socket應用Policy注意事項

Socket的好處就是可以一直保持Client與Server端的連線,
早期還沒有FMS這麼完整的Server端Flash訊息交換應用
常會利用Java開發Socket Server跟Flash做互動
以達到作即時互動,聊天室或線上遊戲的需求

FMS現在已經很好用了,那Socket可以來做什麼
也許用Socket做Flash版本的FTP Client或是Telnet Client....

在新版本的Flash Player,要使用指定port進行Socket連線
Policy File是個很重要的規定
新的規定是,一定要使用xmlSocket連線取得Policy file
才能進行你所要的socket連線

舉例來說,你希望利用socket與10021 port 的FTP Server連線
你必須先把允許的ftp ip與port寫在policy file內
而這policy file要放在哪裡呢?Web根目錄嗎?不對,
你必需先建立一個Socket Server,Adobe建議走843 port
把policy file放在xmlSocket指定的目錄下

再透過
Security.loadPolicyFile("xmlsocket://192.168.1.2:843")
載入policy file後
接下來才能使用socket與ftp server做連線

2009年7月6日 星期一

JS Reload Flash造成錯誤

在實作上,Flash與JS互動式相當普遍的使用

當在網頁內利用利用jQuery.css()來改變flash Container的大小或位置
會造成flash object自動reload
而如果在程序上有一些原本已透過JS傳遞到flash內部的參數
因為這樣的reload 會讓已傳入的參數因初始化而消失
很可能會造成錯誤發生

2009年6月4日 星期四

Flash讀取網頁參數

在Flash內要讀取,所在網頁上所帶的參數
可透過loaderInfo.parameters讀取相關參數
但若是要讀取Flash Object ID則需要透過
ExternalInterface來取得

以下是判斷特定參數是否存在的測試
使用loadInfo讀取網頁 check html tag所帶參數
測試this.loaderInfo.parameters["test"]
1.tag:embed src="myflash.swf?"..
結果:false
2.tag:embed src="myflash.swf?test"
結果:false
3.tag:embed src="myflash.swf?test=11"
結果:true

2009年5月15日 星期五

取得TextField的TextFormat

通常對於fla已存在的textField要取得textField上設定的粗體,斜體,顏色等性質
如果透過
tf:TextFormat=myText.getTextFormat()
會發現
tf.size=12(有取到)
t.bold=undefined(沒抓到)
要抓到完整的textFormat還是要輸入取樣的文字範圍
tf:TextFormat=myText.getTextFormat(0,1)
就可以取得全部的值了

2009年4月16日 星期四

解決與其他JS FrameWork衝突問題

jQuery的selector為$()
但許多其他frameWork亦使用$(),
要解決這部份衝突
1.jQuery.noConflict();
2.原本使用$,都改用jQuery
如$(this)
改為jQuery(this)

2009年4月9日 星期四

Flash解析xml,對空白tag判斷的幾種結果

當Flash由xml取得整份的xml資料,要檢查某個tag是否存在
或是否是空值
sample xml

(test)
(tag1)(/tag1)
(tag2/)
(tag3) (/tag3)
(/test)


測試結果
(xml.tag1=="")為true
(xml.tag2=="")為true
(xml.tag3=="")為true
(xml.tag4=="")為true
(xml.tag4)為true

即使node不存在還是會傳回true...不要用tag去做存在檢查

2009年3月27日 星期五

載入外部swf當作Asset Library

如果在開發Flash專案,有部份asset可能需要動態更新
由設計人員進行維護,可以將asset存放在獨立的swf內
透過載入外部swf到主程式內操作使用
這部份可應用在需要做介面更換的程式或遊戲開發

1.載入外部swf檔案
這個要當作Asset Lib的swf擋,stage上可以不要放物件
lib內要被當作asset使用的物件,都要設定其linkage
linkage名稱就會被當作被Class名稱而被其他程式引用
2.載入完成後,透過取物件的applicationDomain屬性來取得
ApplicationDomain物件
3.利用ApplicationDomain物件的getDefinition()來取得所要的class
4.注意:當要實體化取得的class時,實體的類別還是要宣告為MovieClip
才不會出錯

var myLoader:Loader= new Loader();
var myUrlReq:URLRequest= new URLRequest(_path);
myLoader.load(myUrlReq); 
myLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, onLoaded); 

function onLoaded(event:Event):void{ 
    var appDomain:ApplicationDomain = event.target.applicationDomain;
    var myClass:Class = Class(appDomain.getDefinition(_name));
    var myInstance:MovieClip=new myClass();
    addChild(myInstance)
}


相關連結

如何取得動態換行文字高度

對於動態載入外部文字的TextField,
使用autoSize讓TextFild可設定寬度自動換行
但無法抓到正確的文字高度

1.先以autoSize設定讓他可自動換行後
2.再設定允許要使用的寬度
這時文字已經依照你的設定的寬度,自動換行排列
3.關掉autoSize
4.這時你可以取得文字框的高度
myText.autoSize = TextFieldAutoSize.LEFT;
myText.width =300;
myText.autoSize = TextFieldAutoSize.NONE;
trace(myText.textHeight)

2009年3月9日 星期一

讓兩個Sprite同時接收到MouseEvent

如何讓疊合的兩個mc同時都可以
接收到mouse的event

情境:
1.有一個bg_mc,上面有ㄧ個star_mc
2.在bg_mc上設定Roll_Over與Roll_Out event監聽
3.當滑鼠在bg_mc上會觸發Roll_Over事件
但當滑鼠移動到star_mc上,則bg_mc的Roll_Out事件會被觸發

如何讓滑鼠在star_mc上,而Roll_Out不會被觸發
做法:
1.產生一個mcContainer,把bg_mc與star_mc都加到
mcContainer內
2.Roll_Over與Roll_Out設定到 mcContainer上
mcContainer.addEventListener(MouseEvent.ROLL_OUT,XXX);
mcContainer.addEventListener(MouseEvent.ROLL_OVER,XXX);
mcContainer.mouseChildren=true;
即可

2009年2月27日 星期五

Tweener Complete事件使用

在Tweener執行完成觸發onComplete所設定的事件
範例:
Tweener.addTween(mc,{
x:targetX,
time:1,
onComplete:runComplete,
transition: "easeOutExpo"
})
function runComplete(){};
如果設定為
onComplete:runComplete(),那麼function會立刻被執行

onComplete:runComplete,那麼function會在真正complete
也就是一秒後才會被執行

由EventListener取得loaderInfo性質

情境
1.有一個ImgViewer Class用來載入外部圖片
2.ImgViewer內部使用了loader class來載圖
3.ImgViewer內設定好一個屬性data
3.當圖片載入完成後ImgViewer對外
dispatchEvent(new Event(Complete))
4.在主程式內使用ImgViewer來載入圖片
並監聽ImgViewer 所發出的Complete事件
5.當接收到Complete事件要取得imgViewer內的data值
該如何取得
做法
var viewer:ImgViewer();
viewer.addEventListener(ImgViewer.Complete,onComplete);
function onComplete(e:Event):void{
trace(e.target.parent.data)
}
注意:是要透過parent才能取到imgViewer物件來取得data值

複製Library裡的Mc到Stage上

想到重覆複製Library裡的movieClip到Stage上使用
但又不想特定為這個mc寫一個Class做法如下
FLA
1.開啟Library,找到物件,按滑鼠右鍵Linkage
2.勾選Export for ActionScript
3.設定Identifier名稱,這名稱即可當作如class名稱般使用
AS3使用
var myBtn:mmBtn=new mmBtn();
//mmBtn為Library內linkage的名稱