承襲著上一篇創作文章,開始緬懷起從前做著配樂的時間,
那時為了一個網拍服裝的配樂(那真是一個大家都喜歡無目的Flash開場的年代)
衍生了一個無腦的Concept叫做巴洛克時期,
即使只是當期的主題服裝有很多的蕾絲,還是要找個無腦的人做了點無腦的配樂,也就是我,
阿!!巴洛克時期,巴哈!!都是巴開頭,都是古代人!!對!!!!全中!!不可思議!
於是一段改編巴哈的編曲就這樣誕生了
身為一個愛好古典音樂的台客,當然要尊重原作,不免俗的貼一下原曲,並且向這位現代音樂之父獻上最高的敬意
2011年2月25日 星期五
MP3-papa
一個不小心發現19歲時送給爸爸的父親節禮物
是一張CD+DVD,親手錄製,價值23元新台幣,
時間過的飛快,那已經是去年的事情了,對,我今年20歲,我好年輕,
開始緬懷起創作的那段日子了(遠目)
趁機會開個類別叫做音樂創作好了(扭)
PAPA
Lyrics & Music By AC
20年前他還是個年輕的小夥子
他有個帥氣的外表以及健美的身材
他有個夢想,是擁有一個完美並甜蜜的家庭
這就是我們偉大的老爸
日子一天度過一天
他日以繼夜的辛勤工作以完成他的夢想
現在他有兩個小孩以及一個美麗的老婆
這就是我們偉大的老爸
現在他比以前老了一些,也胖了一些
但他仍是我們偉大的老爸
他比年輕時減少了一些帥氣
但他仍是我們偉大的老爸
即使我們都不常窩在您的身邊
我們仍然需要說
父親節快樂
是一張CD+DVD,親手錄製,價值23元新台幣,
時間過的飛快,那已經是去年的事情了,對,我今年20歲,我好年輕,
開始緬懷起創作的那段日子了(遠目)
趁機會開個類別叫做音樂創作好了(扭)
PAPA
Lyrics & Music By AC
20年前他還是個年輕的小夥子
他有個帥氣的外表以及健美的身材
他有個夢想,是擁有一個完美並甜蜜的家庭
這就是我們偉大的老爸
日子一天度過一天
他日以繼夜的辛勤工作以完成他的夢想
現在他有兩個小孩以及一個美麗的老婆
這就是我們偉大的老爸
現在他比以前老了一些,也胖了一些
但他仍是我們偉大的老爸
他比年輕時減少了一些帥氣
但他仍是我們偉大的老爸
即使我們都不常窩在您的身邊
我們仍然需要說
父親節快樂
2011年2月24日 星期四
淺談Flash傳值(三)
延續著上一篇淺談Flash傳值(二)獲得更大的迴響之後(FB2篇留言,2個讚,網誌0.4趴的鼓勵獎賞),激起我更強烈的小宇宙(比起上次大約掉了3趴),於是想到了今天要講的主題,如果你以為我要講的是拿到XML的應用,那就必須失望了,沒關係,人生總是如此,就像鼓起勇氣跟心愛的女孩表白,卻發現她下個月就要去上海的感覺一樣,寫到這裡,不禁潸然而淚下;
言歸正傳,其實本來是要開始寫拿到XML的應用,但看到XML,不拿出來講一下,感覺對不起按下讚的那兩個人,就像是我在路上看到老太太就一定會扶她過馬路(即便是在家樂福遇到,也要硬拖著他的拐杖拉去外面),畢竟沒有扶她過馬路,我要怎麼把她推下海呢!?
在講XML之前,先稍微詳述一下之前提到的PHP,Flash因為安全性的問題,無法直接跟資料庫端溝通,必須透過第三方的php或是asp或是能讓你開心的任何語言,基本上,這些甚麼批甚麼批就像是NPC一樣,沒錯,就是像奧格瑪門口那兩個棒槌一般,對付棒槌,就只能用下等的方法,沒辦法,棒槌牽到東京還是棒槌,所以我們要丟給棒槌的值,會有變數名稱以及內容,就像我們第一篇提到的:變數名稱是city,內容是Taipei,如果這個棒槌聽不懂你丟過來的變數名稱,比如說你問奧格瑪門口的棒槌:"請問排骨飯哪裡有賣!?","毫無反應....就只是個棒槌",當他聽到他能夠了解的問題,就會丟回來該有的答案,Flash與第三方溝通串接的方式通常有XML跟JSON,甚麼是JSON呢?(九把刀表示:"那又是另一個故事了"),既然不講為何要提呢?沒辦法,不提不專業,我的人生也是充滿許多無奈的;
終於真的講到XML了,XML我個人把它當作是一種潮撞架構,啪啪啪啪啪啪啪啪啪(想甚麼?這是一段折很多筷子的故事),歐不是,是巢狀架構,甚麼是巢狀,簡單的說,他是個巢,例如下面這個簡單的XML
讀進來的xml就像是我家,我生了兩個小孩,大兒子叫菜菜人,小兒子叫蛋蛋人,其中大兒子菜菜人又生了兩個小孩,菜菜人的大兒子,菜菜人的小兒子,那麼我是誰!?對,我是阿西,所以被包在【<>】與【</>】,便是這個tag的下一代,相信經過我精闢的解釋之後,大家一定對XML更加模糊了,那我們就進入下一步,從Flash拆解XML拿資料,先改寫as裡面第23行
所以用children()[int]可以一層層的取得巢狀結構內的資料
這時候在改寫一下第23行
得到完美的解答
言歸正傳,其實本來是要開始寫拿到XML的應用,但看到XML,不拿出來講一下,感覺對不起按下讚的那兩個人,就像是我在路上看到老太太就一定會扶她過馬路(即便是在家樂福遇到,也要硬拖著他的拐杖拉去外面),畢竟沒有扶她過馬路,我要怎麼把她推下海呢!?
在講XML之前,先稍微詳述一下之前提到的PHP,Flash因為安全性的問題,無法直接跟資料庫端溝通,必須透過第三方的php或是asp或是能讓你開心的任何語言,基本上,這些甚麼批甚麼批就像是NPC一樣,沒錯,就是像奧格瑪門口那兩個棒槌一般,對付棒槌,就只能用下等的方法,沒辦法,棒槌牽到東京還是棒槌,所以我們要丟給棒槌的值,會有變數名稱以及內容,就像我們第一篇提到的:變數名稱是city,內容是Taipei,如果這個棒槌聽不懂你丟過來的變數名稱,比如說你問奧格瑪門口的棒槌:"請問排骨飯哪裡有賣!?","毫無反應....就只是個棒槌",當他聽到他能夠了解的問題,就會丟回來該有的答案,Flash與第三方溝通串接的方式通常有XML跟JSON,甚麼是JSON呢?(九把刀表示:"那又是另一個故事了"),既然不講為何要提呢?沒辦法,不提不專業,我的人生也是充滿許多無奈的;
終於真的講到XML了,XML我個人把它當作是一種潮撞架構,啪啪啪啪啪啪啪啪啪(想甚麼?這是一段折很多筷子的故事),歐不是,是巢狀架構,甚麼是巢狀,簡單的說,他是個巢,例如下面這個簡單的XML
看看這個完美的結構,要多潮有多潮,將這些另存為【home.xml】利用上次寫的API寫一支as將xml載入到Flash裡菜菜人 28 菜菜人的大兒子 1 菜菜人的小兒子 0.5 蛋蛋人 18
package {
import flash.display.*
import flash.events.*
import flash.net.*;
import flash.text.*
import as3.ac.net.InternetTransfer
public class netTrans extends Sprite {
public var _net:InternetTransfer
public function netTrans() {
addEventListener(Event.ADDED_TO_STAGE, addToStageHandeler)
}
private function addToStageHandeler(_e:Event) {
removeEventListener(Event.ADDED_TO_STAGE, addToStageHandeler)
preset()
}
private function preset() {
_net = new InternetTransfer()
_net.load("home.xml")//延續上次開發API裡面的讀取函式將home.xml讀進Flash中
_net.addEventListener(Event.COMPLETE, loadCompleteHandeler);//監聽收到回傳值時的Event
}
private function loadCompleteHandeler(_e:Event) {
var __xml:XML=new XML((_e.target.data))
trace(__xml)//trace看看
}
}
}讀進來的xml就像是我家,我生了兩個小孩,大兒子叫菜菜人,小兒子叫蛋蛋人,其中大兒子菜菜人又生了兩個小孩,菜菜人的大兒子,菜菜人的小兒子,那麼我是誰!?對,我是阿西,所以被包在【<>】與【</>】,便是這個tag的下一代,相信經過我精闢的解釋之後,大家一定對XML更加模糊了,那我們就進入下一步,從Flash拆解XML拿資料,先改寫as裡面第23行
trace(__xml.children()[0].children()[0])這時候會拿到
當啷~~~菜菜人的個資就這麼輕易的被你取得了菜菜人 28 菜菜人的大兒子 1 菜菜人的小兒子 0.5
所以用children()[int]可以一層層的取得巢狀結構內的資料
這時候在改寫一下第23行
var __vegatableMan:Object = new Object()//宣告一個物件為菜菜人
__vegatableMan.name = __xml.children()[0].children()[0].children()[0]//菜菜人的系名是xml中第三層的第0筆
__vegatableMan.age = __xml.children()[0].children()[0].children()[1]//菜菜人的年紀是xml中第三層的第1筆
__vegatableMan.totalChild = __xml.children()[0].children()[0].children()[2].children().length()//用length()函式可以取得xml長度,將他指定為菜菜人的子孫人數
__vegatableMan.childArray = new Array()//給菜菜人一個陣列裝他的子孫
var i:int
for (i = 0; i < __vegatableMan.totalChild; i++ ) {
var __child:Object = new Object()//宣告一個物件成為孩子
__child.name = __xml.children()[0].children()[0].children()[2].children()[i].children()[0]//巢狀架構繼續往下挖
__child.age = __xml.children()[0].children()[0].children()[2].children()[i].children()[1]//巢狀架構繼續往下挖
__vegatableMan.childArray.push(__child)//將子孫丟進陣列裡
}
trace("Name : " + __vegatableMan.name)
trace("Age : " + __vegatableMan.age)
trace("TotalChild : " + __vegatableMan.totalChild)
for (i = 0; i < __vegatableMan.totalChild; i++ ) {
trace("Child" + (i + 1) + "-Name : " + __vegatableMan.childArray[i].name)
trace("Child" + (i + 1) + "-Age : " + __vegatableMan.childArray[i].age)
}得到完美的解答
Name : 菜菜人 Age : 28 TotalChild : 2 Child1-Name : 菜菜人的大兒子 Child1-Age : 1 Child2-Name : 菜菜人的小兒子 Child2-Age : 0.5可以拆解完整的XML架構,成為潮到出水的潮男,接下來,我們可以開始做色色的事情了...待續 範例檔下載
2011年2月23日 星期三
淺談Flash傳值(二)
延續著上一篇 淺談Flash傳值(一) 分享到FB後的廣大迴響(2篇留言,2個讚),激起我強大的鬥志(大約4趴),決定接著繼續寫下去,對於記憶體只有2byte的我來說,延續上篇是困難的事情,於是找到了上次的範例檔研究了一下,想好了接下來要講的東西,沒錯,就是物件導向(上次明明說待續不是這個)
隨著年紀逐漸的增長,打開幾百行Code的as繼續完成變成一件比吃掉自己的頭還要困難的事情,所以身為一個專業的programer,一定要讓主要這支as精簡精簡再精簡(比如說叫同事幫你寫),所以我們邁向了物件導向的偉大旅程
甚麼是物件導向呢?簡單的我們可以找出四個定義:繼承(Inheritance) 、多載(Overloading)與重寫(Overriding) 、封裝(Encapsulation) 、資料抽象化/抽象資料型別(Data abstraction / Abstract Data Type) 看到這四個中英文交雜(我都還不太確定她是英文)的專有名詞之後,想必你也跟我一樣開始不想看下去了,所以我們把自己定下一個簡單註解,物件導向:半年後我打開上次寫的程式碼,我還想瞭解他啊!!!!!!!對,就是這股熱忱,我們可以開始做正事了
打開上次的範例檔可以發現,主要要做的事情就是,把東西丟給NPC,等NPC回來跟我靠北,接下來的30年寫Code生涯,我應該都會做重複的事情,那我就應該將這隻as做的動作寫成一支API
所以我們抓出這支as在做的事情,並自行定義一個類別,寫成另一支as
當啷~~~~跟上一次一摸摸一樣樣的結果,但是我們不用再去記以後丟值給其他NPC要寫那些Code了,省下來的腦部空間又可以多記住一些星爺的經典台詞了,想起來我就覺得開心,有了拿到的XML接下來我們又可以做些色色的事情了...歐不是,是做些其他的事情了...............待續
範例檔下載
隨著年紀逐漸的增長,打開幾百行Code的as繼續完成變成一件比吃掉自己的頭還要困難的事情,所以身為一個專業的programer,一定要讓主要這支as精簡精簡再精簡(比如說叫同事幫你寫),所以我們邁向了物件導向的偉大旅程
甚麼是物件導向呢?簡單的我們可以找出四個定義:繼承(Inheritance) 、多載(Overloading)與重寫(Overriding) 、封裝(Encapsulation) 、資料抽象化/抽象資料型別(Data abstraction / Abstract Data Type) 看到這四個中英文交雜(我都還不太確定她是英文)的專有名詞之後,想必你也跟我一樣開始不想看下去了,所以我們把自己定下一個簡單註解,物件導向:半年後我打開上次寫的程式碼,我還想瞭解他啊!!!!!!!對,就是這股熱忱,我們可以開始做正事了
打開上次的範例檔可以發現,主要要做的事情就是,把東西丟給NPC,等NPC回來跟我靠北,接下來的30年寫Code生涯,我應該都會做重複的事情,那我就應該將這隻as做的動作寫成一支API
所以我們抓出這支as在做的事情,並自行定義一個類別,寫成另一支as
package as3.ac.net{
import flash.display.*
import flash.events.*
import flash.net.*;
public class InternetTransfer {
public var url:String;//宣告這支as的公開變數url
public var myRequest:URLRequest ;//宣告這支as的公開URLRequest
public var variables:URLVariables;//宣告這支as的公開URLVariables
private var loader:URLLoader//宣告這支as的私有URLLoader
public function InternetTransfer() {
myRequest= new URLRequest()//當新增一個自己定義的InternetTransfer即產生URLRequest
loader = new URLLoader();//當新增一個自己定義的InternetTransfer即產生URLLoader
}
public function send($Target:String,$Variables:Object,$method:String="GET"){//定義一個公開函式send提供傳送變數出去
url = $Target
myRequest.url=url
transVariables($Variables)//為了懶惰,要傳送的變數直接給Object,再透過function transVariables把她轉成給myRequest的URLVariables,就在第35行
myRequest.data = variables
myRequest.method=$method//傳送類型直接吃給這支as的method
loader.load(myRequest);
}
public function load($Target:String,$method:String="GET"){//定義一個公開函式load提供單純的接受回傳參數
url = $Target
myRequest.url=url
myRequest.method=$method
loader.load(myRequest);
}
public function addEventListener($event:*,$function:Function) {//重寫一個監聽函式
loader.addEventListener($event, $function);
}
public function removeEventListener($event:*,$function:Function) {//重寫一個移除監聽函式
loader.removeEventListener($event, $function);
}
private function transVariables($target:Object) {
variables=new URLVariables()
for (var i in $target) {
variables[i]=$target[i]
}
}
}
}
這時候再改寫一下上次寫的aspackage {
import flash.display.*
import flash.events.*
import flash.net.*;
import flash.text.*
import flash.system.System
import as3.ac.net.InternetTransfer//將剛剛寫好的API叫近來
public class netTrans extends Sprite {
public var _net:InternetTransfer//宣告一個新的自訂類別InternetTransfer
public function netTrans() {
addEventListener(Event.ADDED_TO_STAGE, addToStageHandeler)
}
private function addToStageHandeler(_e:Event) {
removeEventListener(Event.ADDED_TO_STAGE, addToStageHandeler)
preset()
}
private function preset() {
System.useCodePage=true//因Google回傳的中文編碼關係,所以須設定
_net = new InternetTransfer()//產生InternetTransfer實體
_net.send("http://www.google.com.tw/ig/api",{weather:"Taipei"})
_net.addEventListener(Event.COMPLETE, loadCompleteHandeler);//監聽收到回傳值時的Event
}
private function loadCompleteHandeler(_e:Event) {
var __xml:XML=new XML((_e.target.data))//Google回傳的值為XML
trace(__xml)//trace看看
}
}
}
當啷~~~~跟上一次一摸摸一樣樣的結果,但是我們不用再去記以後丟值給其他NPC要寫那些Code了,省下來的腦部空間又可以多記住一些星爺的經典台詞了,想起來我就覺得開心,有了拿到的XML接下來我們又可以做些色色的事情了...歐不是,是做些其他的事情了...............待續
範例檔下載
臘味盅飯

首先看了看日曆,接著與噴打洗刷刷

接著把冷凍的臘腸放在昨天的剩飯上轉圈

當啷~~臘味盅飯完成

拿出在頂好買的保祿

當啷~~雞肉大餐完成~~

接著開起左手的大眼睛模式

搬回家後的第一次接吻

你總是抬著胸膛呈現你帥氣的英姿

你總是用天真的笑容安慰我沮喪的心情

當我開心的時候你總是表現的比我雀躍

我們三個一起走過最艱困的時光

其中包含你帥氣的眼神

包含你帥氣的背影

包含我們一起度過的快樂

包含你那些傻傻不顧一切的付出

今天跟噴打約定好

在你走失滿一週年的今天
一起吃個飯
一起吃個飯

用快樂告訴你我們都很好

對你滿出來的思念
想跟你說不管你從哪裡來,最後往哪去
想跟你說不管你從哪裡來,最後往哪去

你的微笑,永遠存放在我們的心裡

關燈,左手,晚安
蔥爆肉片飯

首先在頂好門口的夾娃娃機發出很強的執念
走出雷~~走出雷~~你他媽走出雷~~
走出雷~~走出雷~~你他媽走出雷~~

當啷~~走出雷了

由於實在不知道要洗甚麼了
那就喜洋洋好了
那就喜洋洋好了

首先請新來的跟海綿寶寶一起顧著洗米杯

當啷~~白飯完成

接著不可以在胡鬧了,拿出兩顆蒜頭互相切割
畢竟有句成語是這麼說的:"只有蒜頭能切割蒜頭"
畢竟有句成語是這麼說的:"只有蒜頭能切割蒜頭"

但是成語沒想到的是
蒜頭還可以切割青蔥
蒜頭還可以切割青蔥

切割辣椒

切割洋蔥

切割沒拆封的杏鮑菇

切割醬油

切割烤肉醬

切割米酒頭

當啷~~所有東西切割完畢,上帝保佑蒜頭

接著用剩下的青蔥緊緊的抱住肉片

當啷~蔥爆肉片完成

接著把整盒蛋放進烘衣機裡面

當啷~~~杏鮑菇烘蛋完成(天曉得哪來的杏鮑菇)

配上可口可樂,成為情比金堅的蔥爆肉片飯套餐

吃

關燈,同時睡著
薑汁燒肉蓋飯

首先,將菜擺在一邊,鍋子呈滿水

接著頭埋進去洗臉

...

......

.........

用三張充版面並證明這樣淹不死自己後
接著把今天用到的菜擺好
接著把今天用到的菜擺好

整個人彷彿屍體般的癱軟在流理台上

噹啷~~材料就準備齊全了,連砧板也跟著出現

接著將醬汁會用到的東西擺擺好

然後將醬油一飲而盡

當啷~~醬汁完成

接著將肉片用三角夾夾著,並用手搧風,讓肉片充分的感受到醬汁的溫暖

當啷~~薑汁燒肉完成

接著將兩顆莫三比克的靈魂之石擺放在地上

用力一踩!!!!

當啷~~荷包蛋完成(踩太大力了)

接著從冰箱拿出昨天的剩飯

將飯鍋戴在頭上

當啷~~~白飯完成

全部丟到碗裡,薑汁燒肉蓋飯 完成!!

吃

關燈,同時上樓畫藍圖
訂閱:
意見 (Atom)