Skip to main content

Posts

Showing posts from 2008

[Flex] pureMVC Standard 練習筆記

參考資料 : pureMVC 官方網站

也許對於"純"程式設計師來說 pureMVC 才是比較正統的 MVC design pattern 的作法...跟它相處了兩天還是沒辦法對它產生愛啊... 也許它的可攜性比較高...但是我實在看不到它可愛在哪裡...也許它太正統了;也許是因為它都不使用 Flex framework吧...(可能需要慢慢體會...)

先了解它的主要架構就是一對一對的:

• Model vs. Proxy
• View vs. Mediator
• Controller vs. Command

以下是同上篇 [Flex] Cairngorm 練習筆記 一樣的工作改為 pureMVC 寫法
Menu tree:


list.xml :

<?xml version="1.0" encoding="utf-8"?>
<data>
<list name="AAAA" data="0"/>
<list name="BBBB" data="1"/>
<list name="CCCC" data="2"/>
<list name="DDDD" data="3"/>
</data>


0. ListVO
package com.mvc.model.vo
{
public class listVO
{
public function listVO(label:String, data:String){
this.label = label;
this.data = data;
}
public var label:String;
public var data:String;
}
}

1. 從 ListProxy 開始寫
pureMVC 的 Proxy 主要的工作大概就是:
匯集對應 Models 提供方法、屬性給別人使用 ( 建議:給自己或 Command 修改就好 )
要努力跟 Mediator 絕交,不要認識最好
封裝區域邏輯 ( 反正就是弄好資料才給別人 )…

[AS3] ASDoc 快速上手

資料出處 :Using ASDoc

常聽到有人問如何輸出 ActionScript API 文件,在這邊簡單的與大家分享建立 ASDoc 的其中兩個方法:

1. 使用 Flex SDK
請先下載 Flex SDK 解壓後會在 bin 內找到 ASDoc
運行環境:Mac OSX 10.5
打開 應用程式 / 工具程式 / 終端機
直接將 ASDoc( Unix ) "拉"到 終端機視窗內...沒錯!OSX 就是這樣有人性啊!不得不讚嘆...回到正題,接著鍵入:(asdoc後面)
如果你的 as sources 是在 /Users/yourName/myProject/src 下
想要整包輸出就是指定 : -doc-sources

Last login: Tue Dec 9 14:58:35 on xxxx
Your-macbook-pro:~ yourName$ /Users/yourName/flex_sdk/bin/asdoc -doc-sources /Users/yourName/myProject/src -main-title "XX API Documentation" -window-title "XX API Documentation" -output /Users/yourName/myProject/doc


運行環境:Windows XP pro
如果嫌麻煩就設好 FlexSDK\bin 的環境變數,不懂如何設定的話請愛用 google 搜尋。
打開 開始列 / 程式集 / 附屬應用程式 / 命令提示字元
如果你已經設好環境變數的話可以直接鍵入:如果沒有就乖乖的用 cd 到 FlexSDK\bin下
asdoc -doc-sources D:\yourFlexProjectPath\src -main-title "XX API Documentation" -window-title "XX API Documentation" -output D:\yourFlexProjectPath\doc

按下 Enter 如果沒有意外的就幾秒後就可以在 doc/內找到輸出好的 html 囉!
PS. 我發現 ASDoc 檢查的比 Flex Compiler 還嚴謹,所以…

[Flex] Cairngorm 練習筆記

由於工作的關係,開始接觸 Adobe 官方建議的微型 MVC 架構 "Cairngorm",剛開始挫折不斷。看了官方的 CairngormStoreWeb 範例教學說明..嗯...看到想睡;在 google 上搜尋了一堆經驗分享文章也都是片片段段,最後終於讓我發現了一個寫的相當簡單易懂的 Getting Started with Cairngorm 教學系列文章 by David Tucker,強烈推薦想要 Cairngorm 快速入門的人一定要看一下!尤其示意圖更是容易理解。

先到 Adobe open source Cairngorm download page 下載最新的 Cairngorm Binary file,想要了解整個架構的可以下載 Source file

以下是我練習的範例:by Flex Builder 3
目標:畫面上只有一個 list component 資料來源為外部 xml
menu tree :


list.xml :

<?xml version="1.0" encoding="utf-8"?>
<data>
<list name="AAAA" data="0"/>
<list name="BBBB" data="1"/>
<list name="CCCC" data="2"/>
<list name="DDDD" data="3"/>
</data>

1. 從 ModelLocator 開始寫 :
使用 Signleton design pattern 重點是將要使用的資料都收集在這邊,由於練習的範例只有顯示一個 list 所以只提供 一個 "list:ArrayCollection" 屬性,(如果複雜的可由 Model class 提供請參考 CairngormStoreWeb 範例寫法 )
package com.model
{
import com.adobe.cairngorm.model.ModelLoc…

[AIR] Value Object classes creator

會花時間做這個App完全是 Erin 懶人血液作祟...
由於開發過程中會使用一些Value Object classes 每次要新增就得將舊的 VO class copy and paste 然後打開 AS 檔剪剪貼貼...光這樣的過程重複個幾次就非常惱人,為了一勞永逸隨手用 Flex 3 Build 了一個 VO creator...XD

使用方法很簡單
只要將 VOCreator 上的空白欄位填上,點選Save as就可以了...

輸出 myVO.as:
/**
* This class was created by AS3 VOCreator v1.0
* Copyright (c) 2008 Erin Lin
* All rights reserved.
* + + + + + + + + + + + + +
* Project : yourProjectName
* Name : myVO.as
* Date : Wed Nov 26 13:20:46 GMT+0800 2008
**/
package com.you.vo
{
public class myVO
{
private var _var1:String;
private var _var2:int;
public function myVO(){}
/**
* Set var1
*
* @param var1 the value to set.
**/
public function set var1(value:String):void{
_var1=value;
}
/**
* Get var1
*
* @return var1 as String.
*/
public function get var1():String{
return _var1
}
/**
* Set var2
*
* @param var2 the value to set.
**/
public function set var2(value:int):void{
_var2=value;
}
/**
* Get var2
*
* @return var2 as int.
*/
public function get var2():int{
return _…

[AS3] Embedding font's glyphs from SWF files

進入到 AS3 世界後,越來越多畫面是由 Script、Components、XML Model 與 CSS stylesheet 組成,embeded fonts 變成動態文字應用很重要的一環。

要在Flash or Flex 中 Embed fonts 有相當多的作法,光官方的 Help 就有幾種寫法:
Flex 3 live doc:
Embedding fonts from SWF files
Using embedded fonts
Flash :
Embedding fonts
google 上還有一堆...

embed 英文字型檔是很簡單的,但是遇到中文字就會是一場惡夢...要使畫面好看,撇除 embed 整包中文字型,轉而打包特定使用到的中文字來供全部畫面使用,作法是由 Embedding fonts from SWF files 參考而來。
以下方法不管 Flex or Flash CS3都適用,至少可以省下相當的檔案大小...
打開 Flash CS3,開新 AS3 檔案, 使用工具箱建立一個動態文字框到畫面上。選擇需要 embed 的中文字型,點選 文字物件的屬性面板上的 『embed』:

跟 Flash 8 作法一樣將要 embed 的中文字打在『Include these characters』的輸入框內:

到這邊跟官方的作法都一樣,唯一輸出的差別是如果要供ActionScript project 使用的話需要將做好的動態文字框按滑鼠右鍵『covert to Symbol』:

如果是用 Flash CS3 製作專案,留在 Library 就可以了。而 Flex的ActionScript Project 需要發佈 SWF 到你所在的路徑然後:
[Embed(source='customedFonts.swf', symbol='customedFonts')]
public static const myFonts:Class; //其實修飾子看個人使用

Flex MXML project: (如同官方說明)

<mx:Style>
@font-face {
/*將文字崁入*/
src:url("customedFonts.swf");
font…

[Flex] Resizable Window Layout

最近研究起『使用者經驗』特別對非固定式 layout 有濃厚的興趣,雖然這類的教學已經被大家寫到爛了,在這邊還是與大家分享一下在 Flex 中實作網頁上 Resizable Swf Window Layout 的 很簡單作法...



<?xml version="1.0" encoding="utf-8"?>
<mx:Application
xmlns:mx="http://www.adobe.com/2006/mxml"
xmlns:local="*"
frameRate="30" horizontalScrollPolicy="off"
verticalScrollPolicy="off"
layout="absolute" width="400" height="430">
<mx:Script>
<![CDATA[
import flash.external.ExternalInterface;
private function updateStageSize() : void
{
width = testWin.width;
height = testWin.height;
//Call 網頁上的 javascript 做 resize
ExternalInterface.call("doResize", width, height);
}
]]>
</mx:Script>
<mx:Resize id="stageResize" duration="600"/>
<mx:TabNavigator id="testWin" resizeToContent="true"
resizeEffect ="stageResize"
resize="callLater(updateStageSize)&quo…

[AIR] Using Badger for Adobe AIR applications

The application was created by Grant Skinner for Adobe Systems, Inc.

剛開始一般開發者要分享 AIR app 都是直接留個連結提供下載,對使用者而言無形中增加許多麻煩... 如 Adobe® AIR™ runtime 沒有安裝... air 程式安裝檔被 Mac OSX rename 成 .air.zip 等等...

在AIR beta版時 Adobe Lab推出由 Grant Skinner 製作的 AIR install badge 提供一個 AIR app 共同介面的線上安裝接口。當使用者點選網頁上客制的 AIR install badge, 程式自動判斷使用者電腦有無缺少 Adobe® AIR™ runtime 或是直接出現程式安裝畫面,聽起來是很完美...不過客製化部分完全是手工製作...對開發者無形中也增加許多麻煩(本人就懶得使用了...ORZ )

直到 AIR 正式版現身,Grant Skinner 又推出了 AIR install badges application "Badger" ,此程式當然是由 Flex 製作的 AIR app,原文連結 : Using Badger for Adobe AIR applications

Badger 將一切客製 AIR install badge 流程圖像化了,對超級懶人的我簡直是大愛~~
以下的範例就是由 Badger 製作:( 真的是很簡單喔!反而是多花了一些時間搞懂如何放到 Blogger 上...)

Jam's Mp3 Player v1- AIR1.0

Please upgrade your Flash Player
This is the content that would be shown if the user does not have Flash Player 6.0.65 or higher installed.

[AIR] 蕭可愛第三發:Jam's mp3 player

其實這個 Mp3 player 到發表前已經改過很多版本,最後一次修改原因是七月底到資訊展閒晃,很神奇的被說服買了人生的第一台 Macbook pro,經過了兩三天 Mac OS 的文化衝擊,深深的覺得蘋果的 UE( user experience) 不是玩假的。說實話我的下一台電腦應該還是會繼續買 Mac(希望台灣蘋果能便宜點...= =)。體驗到 Mac OS的直覺操作,手上斷斷續續寫很久也不知道在寫什麼的 Mp3 player 半成品毅然決然的打掉重做,使用工具從 Flash 改為 Flex 來開發。

由於 Erin 超超超超喜歡 蕭敬騰 的歌聲,想當然爾還是以他為主題發表了(滿足小小歌迷的一點心願) 。這個 Mp3 player 最大的特點便是簡單使用,簡化一切功能,沒有儲存功能,沒有複雜的設定,就是方便使用者一開啟程式只需要將想聽的 Mp3 直接拖拉到視窗內即可自動循環播放,不想要的檔案直接拖曳 List 項目到程式視窗外即可刪除。伸縮視窗的概念是由某國外 AIR 發表會所展示的 Fun with Abode AIR ,當初看到這段影片是先模仿寫出類似的 Flv player (但未發表) ,才將相同的模式複製到這個 mp3 player。

Jam's mp3 player v1.0
This is a FREEWARE that base on Adobe® AIR™ Runtime
使用的圖像版權屬影像所有人華納國際音樂股份有限公司、喜鵲娛樂有限公司所有
**如果圖像使用有任何問題請聯絡我**

線上下載安裝:

Please upgrade your Flash Player
This is the content that would be shown if the user does not have Flash Player 6.0.65 or higher installed.

如果上面步驟無法安裝請確認您有安裝好以下軟體:
This application requires the following be installed:
Adobe® AIR™ Runtime
Jam's Mp3 Player

操作說明:
可拖曳與播放的檔案格式為:.mp3 .png .jpg .gif(僅呈現第一格)
v1.0版的圖片類只會隨著歌曲變換(並無影像播放設定)

[已尋回] 黃金/公/無結紮/一歲半/約27kgs

這個是我朋友的狗...(謎之聲..難道最近流行狗狗自己離家出走嗎?)

黃金獵犬(卡吠)、男生、1歲半、未結紮,
8/11中午遺失,約27公斤,
有拿零食時會坐下、握手、give me five、趴下,個性非常親人

特徵:舌前端有舌斑,頭頂有翹起的毛(如圖片)
遺失的地點是苗栗縣後龍鎮與通霄鎮的交界處,大約在"白沙屯"這個村莊附近,以道路來說的話,是台一線後龍路段和西濱公路的交界處(全台灣只有這個地方台一線和西濱公路有交界)

謝謝!!
失主非常擔心...希望卡吠跟Latte一樣幸運可以早點回家...><

EDIT 08/25/2008
恭喜卡吠平安回家了!!
開心吶!!

[543] Latte終於回家了!!

今天早上快七點的時候突然接到一通電話,
電話的主人說明昨天他女友在網路上看到我所post的協尋文章,
非常肯定的說他養的多多是我的Latte,因為太多符合的地方。
對方語畢,原本還睡眼惺忪的我就完全醒了,
換好衣服就找早起的老爸一同前往。

到了好心人陳先生的住所,
Latte看到我的那一瞬間又傻了,然後狂叫要開門,
真的是Latte!!><~~~ 天啊!他真是傻狗有傻福啊!
剛迷路就被好心人撿到,沒有流浪到!
而且好心人陳先生與他女友都有好好照顧 Latte (他真的運氣太好啦!)
陳先生與陳先生的女朋友真的非常的謝謝你們!!謝謝謝謝!><~~~

Latte一回到家,就一臉很恍神的感覺,
我到現在還沒有什麼真實感,感覺這一個月是一場夢,
Latte的感覺也是吧!><~~~
寫的亂七八糟,因為實在太開心了!!><~~~

感謝這一個多月網路遇到的好心人很熱心的幫忙,
也再次感謝陳先生與陳先生的女朋友,
謝謝大家!!謝謝謝謝!><~~~

[已尋回] 拉不拉多/公/已結紮/約35-37kg

拿鐵 Latte, 黃白色拉不拉多,快要五歲,約37kg 公, 已結紮!
無晶片,無項圈,腳可能有受傷(因為看監視錄影帶有發現被卡車A)
四隻腳膝蓋有黑毛(因為太喜歡躺在多水的地方,洗不掉),鼻子是紅的,尾巴不會翹到捲高高,坐姿常常會歪一邊,會握手(但是常忘記),叫他坐下常常會趴下...

友善,很白痴,叫他名字會有反應,很愛找水跟冰涼的地方,
喜歡多人的地方,也會主動跑到別人家中,

6/13日早上5點多的時候在蘆洲的尼加拉瓜公園附近走失...
最後問到被看到的地方是早上6:30時在仁華街與仁愛街交叉口那邊,
找了到現在無所獲,請拜託住在三重蘆洲的網友,如果有看到請聯絡我!

[543] 菲律賓 Bohol (薄荷島) 無責任遊玩日記 Day2

4/13/2008 6:30am 起床呦!
Tagbilaran ICM -> Loboc Church



今天很努力的早起,為了就是親耳聽到有名的 Loboc 教堂的兒童合唱團唱聖歌。有鑒於昨日 V-Hire的不定時發車拖慢行程教訓,今天改搭我最喜歡的 Jeepney 前往 Loboc。

快八點的時候到 ICM 的 Jeepney 總站,發現往 Loboc 車上僅僅只有我一個人,到 Loboc 的車資是25P,而司機不停的遊說我只要付250P就可以變成我的專車...可惜老娘一點都不心急的要趕路,撐到八點來了兩三個客人,司機無奈的只好出發。

一路上司機還是好心的充當導遊不停的介紹景點給我認識(我就知道你還是好人的...XD),轉眼間就到達今天的主要目的地:Loboc。

這時候差不多已經快九點,整個教堂塞滿滿都是做禮拜的人,台上的牧師還是神父(請原諒我的無知)正在講道,等著等著過了20幾分鐘終於開始唱歌。咦?聽起來一點都不像有合唱團的感覺...不過菲律賓人天生的好歌喉不容忽視,還是好聽到起雞皮疙瘩。禮拜結束後四處尋找不到 CR (Comfort Room 菲律賓特有的廁所名詞),詢問了一個當地的中年婦女,她熱心的直接帶我去,也順便問了她關於兒童合唱團的事情。我運氣果然好到不行,兒童合唱團去美國公演了!!哈!還有她一得知我是台灣人後,開心的表示她想到台灣觀光,也因為聊的太開心,居然問我需不需要free ride to Tagbilaran。


喜歡台灣的愛德娜(請原諒我用音譯,當地人的名字一個比一個難拼)

Loboc River Cruise 差不多1 hour

本人的旅遊哲學是以美食為主甚至常常不帶相機出門(這次有帶傻瓜攝影機已經很了不起了),如果沒有好吃的東西,通常會讓我覺得那個景點是不好玩或者是沒有記憶性,所以到 BOHOL 怎樣也不能放棄遊河 Buffet。花了十幾分鐘很認真的挑選一家看起來好吃的午餐船,付了 300P 便上船(變貴了..>< 明明看到別人的網誌寫的價錢是280P),雖然好像不知道是被坑還是它最近真的漲價了,不過材料新鮮,口味很棒,還安排兩位法國型男陪我一起坐,衝著好吃又貼心的份上就原諒它了...





跟我同桌午餐的法國人,也成了整船最紅的人,當地的遊客不停的抓著他們倆一起拍照...(只記得其中一個名字是 Paul,但是哪位不記得...>\\\…

[543] 菲律賓 Bohol (薄荷島) 無責任遊玩日記 Day1-2

Chocolate Hills -> Tagbilaran

在 Chocolate Hills 上時由於身體內咖啡因存量不足,恍惚的晃了40幾分鐘,突然聽到前方的當地人對著一個外國老公公說「請你喝杯咖啡..」,咖啡!!菲律賓的咖啡廳真的不多,要不就是甜到翻的三合一咖啡,這時頓時眼睛一亮,很不要臉的跟了上去(不過也很害怕飲食部賣的也是三合一...)。

本人特技之ㄧ就是很容易跟陌生人聊天,與對方聊天過程得知那位當地人 MR. CHIZISTOPAEN A DUMAPIAS (也許拼錯..囧 因為實在看不太懂這位先生的手寫字) 是個 BOHOL 中文導遊訓練員,負責訓練 Philippines 觀光小島群中文導遊,整個課程只有七天,基本需求就是你一定要會中文+英文。如果你到菲律賓學英文且有興趣成為導遊的話,可以多留七天加入訓練課程,相關資料請直接連絡 MR. CHIZISTOPAEN A DUMAPIAS 索取喔!

MR. CHIZISTOPAEN A DUMAPIAS
DEPARTMENT of TOURISM (DOT)
(032) 254-6650
(如果不是032就是038...XD 因為他忘了寫,所以不是很清楚是Cebu還是Bohol電話,但是已經答應他會公佈在網路上,所以...不然直接詢問當地的 DOT 也可呦!)

上篇有寫到所待的小旅館櫃檯很親切,幾乎所有相關交通的事情都是從櫃檯小姐那邊問來的,但是資料上有點小錯誤,由於櫃檯小姐告知 last V-Hire是在 5:00pm,Jeepney是 6:00pm,所以本人就很認真的摸魚到四點出頭才開始準備回程,詢問了當地人回程 V-Hire 撘車位置才知道已經沒有 V-Hire 回城市的消息...

「V-Hire 最後一班是 4:00pm喔!」「現在只剩下巴士..」「Jeepney可能要等一個小時喔!」「最後一班 Jeepney 是 5:00pm」「坐計程車回去很貴喔!要 500P」大家七嘴八舌的講個不停,我的心裡已經在淌血了...即使 V-Hire再怎樣不舒服,回程不用等發車,車時程比較短,怎樣也比巴士強啊!想到等會要搭巴士晃啊晃回城市就囧了...這時候 MR. CHIZISTOPAEN A DUMAPIAS 又出現了,他知道我的困境後,超級好心的幫我到處去詢問在山上的司機...正好他的親戚剛剛好在 Chocola…

[543] 菲律賓 Bohol (薄荷島) 無責任遊玩日記 Day1-1

4月1日至4月14日在菲律賓宿霧呆了將近兩週,從一開始的害怕到後來慢慢的喜歡這個"某"程度上算是個蠻有趣的國家...然而在同一個地方呆太久也是會無聊的,便於4.12、4.13隻身前往Bohol亂玩了兩天。(為什麼寫"亂玩"捏?因為出發前根本沒有很認真的規劃行程...)
嚴格說起來,Bohol這個島真的很小,實在不需要跟團,喜歡有導遊的可以直接到港口找個順眼的司機包行程。喜歡自助式的人去 mall 或者是 hotel 買張地圖就可以玩的很快樂。以下會詳細說明交通、住宿與地圖示意,希望對有打算去Bohol自助旅遊的網友有點幫助 =P


檢視較大的地圖

Cebu -> Tagbilaran
9:10am 出發 約 11時左右到達 Bohol
如果你行程包含宿霧且提早一天到達,可在晚上七點前至 SM mall 一樓的旅行社(就在菲律賓航空旁邊) 直接訂船票。在旅行社購買船票有好處是:不需要提早很久到現場排隊買票還可以信用卡付款。購買 Cebu <-> Tagbilaran 來回 575 Peso,不過這家只獨賣 Weesam Express (台灣旅行社通常是辦 Ocean Jet)。本人搭乘 Weesam Express 感覺非常好,因為它都可以很神奇的不會 Delay (你要相信,在 Philippines 能準時是很了不起的事情)
Cebu <-> Tagbilaran 各家快速船時程請參考Fast Ferry Schedules 或各家船公司網站
Cebu有好幾個碼頭,Ocean Jet在 Pier 1,可搭乘 Jeepney 到附近。Weesam and Super cat都在 Pier 4 請別走錯,只能搭 taxi,taxi 進入 Pier 4 要 10 Peso 的暫時通行費。
有預購船票的建議在開船前40分鐘到達,沒有的請早。
船票要先在 Check in 櫃檯簽名並訂上一張有座位的Boarding pass。進去等待室前,附近有個收錢櫃台記得付 25 Peso的港口稅。
容易暈船的人,可依照天氣再考慮要不要吃暈車藥,天氣很好的話,根本感覺不太出搖晃感。

Tagbilaran Pier -> SUN AVENUE PENSIONNE
快12:00pm到達小旅館
從港口到 SUN AVENUE PENSI…

[AIR] NativeDragEvent

在 3 月 19 日於台北舉辦的 「Adobe 3.19 AIR 上市技術講座」中看到幾個外國 Adobe AIR 範例,其中有些運用到 NativeDragEvent (AIR only) 意指使用者可以"直接拖曳"外部檔案到 AIR 視窗做互動。以下是NativeDragEvent 簡單的用法:

Flash CS3 / AIR 1.0專案
Action in frame1
Stage中有個 TextField names "txt"

import flash.desktop.Clipboard;
import flash.desktop.ClipboardFormats;

stage.nativeWindow.alwaysInFront=true;

txt.addEventListener( NativeDragEvent.NATIVE_DRAG_OVER, doDragOver );

function doDragOver(e:NativeDragEvent):void {
var cd:Clipboard = e.clipboard as Clipboard;

if (cd.hasFormat( ClipboardFormats.TEXT_FORMAT ) ) {
var str:String = e.clipboard.getData( ClipboardFormats.TEXT_FORMAT ) as String;
txt.text = str;
//貼文字
} else {
var arr:Array = e.clipboard.getData( ClipboardFormats.FILE_LIST_FORMAT ) as Array;
txt.text = arr[0].nativePath;
//第一筆File路徑
}
}

[LEGO] 我的 NXT 會講話

要讓 NXT 講話其實非常的容易,只需要下載一個 WavToRso轉檔程式就可以,接著使用電腦中本來就有的錄音程式,這樣就可以讓 NXT 講話囉!

測試環境:Windows
下載並解壓 Wav2Rso.exe ,這是一個 Wav to rso的轉檔程式。如果要感謝作者的話,下載後記得點選網頁最下方的 google ads 。
插上麥克風,打開「音量控制」點選下拉式功能表的 選項 / 內容 選擇錄音,確定麥克風是打開的狀態:
開始 / 程式集 / 附屬應用程式 / 娛樂 / 錄音機,錄製你想要講的話。在這邊有個重點,由於 NXT 的 memory 很小,聲音檔要儘量精簡,但是人並不是完美的能錄製到聲音前面與後面都沒有空隙,所以在你錄好一段聲音檔後,要記得使用 編輯 / 刪除目前位置前面(後面)之內容,將空白的聲波部份裁切掉!這樣還可以省下好幾 Kb 喔!
打開 wav2rso.exe (Greenware,免安裝):

Dictory : 要輸出音檔的檔案夾位置
Select Files : 要轉檔的Wav
Convert: 轉檔鍵,記得轉檔是點選「Convert」而不是「OK」喔!
Resample: 轉檔壓縮比,一般選取 Sinc 96% 就很夠用了
Rate: 聲波取樣頻率 (Sampling Rate),越低檔案會越小,但是相對怪音會很多
將輸出的 .rso檔放到 :C:\Program Files\LEGO Software\LEGO MINDSTORMS Edu NXT\engine\Sounds 內就可以在 NXT-G 中選到它囉!

想要更完美音質的話,請參考其他錄音與音效編輯程式喔!

[AIR] 用 Flash CS3 開發AIR app

AIR (Adobe Integrate Runtime),簡單來講它是個視窗程式的平台,可以輕易地用網頁技術就可以製作視窗程式。使用者需要安裝 AIR runtime 在自己的電腦上,僅僅只要安裝一次,之後就等著升級就好。

製作 AIR app的方法很多, 你可以使用 Flex、Flash、Javascript、AJAX and HTML等等..Erin 本身是 Flash 的愛用者(CS3除外..冏,我恨它的黏黏視窗),所以當 Adobe AIR 上市後,第一個使用的工具還是 Flash(還是得用CS3...),完成以下幾個簡單步驟,你就可以開始開發 AIR app囉!
安裝 Adobe AIR runtime 1.0,如上述,僅需要安裝一次。
下載安裝 Adobe AIR update for Flash CS3 Professional
下載 Adobe AIR SDK (方便debug與快速執行),下載後解壓到 C 或 D 槽下即可

當你安裝了 Adobe AIR update for Flash CS3 Professional 會發現在 Flash的 Publish Setting分類中出現 「Adobe AIR 1.0」,沒錯,使用 Flash CS3開發 AIR app 就是這樣簡單!結束了沒?當然還有... 雖然在 Flash 中按 Ctrl+Enter可以直接測試製作中的 AIR app,但是有個很討人厭的地方就是...compile時間爆久、output window 沒反應!!雖然 Debug / Debug Movie 功能可以出現trace,但是輸出慢就很令人受不了,如果你開發的時候最愛設一些 trace也很愛按 Ctrl+Enter的話,到這邊一定會覺得冏掉了,不過別擔心,下載 SDK 的目的就是為了輔助它的不足。


使用 SDK:
開始列 / 執行 / 鍵入 "cmd" 會開啟命令提示字元視窗 (俗稱 DOS window)
如果你的 SDK是存在 C 槽就是直接打入:cd C:\AdobeAIRSDK\bin (常在用的話可以設環境變數喔!)
接下來要測試直接打入:adl "AIR輸出的xml檔案路徑" [Enter] 如下圖:

trace 文字就會直接出現在畫面內,這樣測試 + debug環境就完成了!
之後每…

[LEGO] NXT幫手君系列--今日運勢君與樂透君

三月一日在台北舉辦的AUG/MMUG網聚,在報到時間由今日運勢君擔任我的小助手供參加者檢測抽獎運勢...=P

[圖]今日運勢君
由於NXT-G的random非常簡陋,常常會出現相同的數字,所以幾乎都是凶系列,噗哈!今日運勢君果然是來打擊大家的 (迷之聲:幹的好啊!XD)
在會場太忙沒時間拍攝影片,只好回家補拍...



[圖]主宰大家拿不拿的到大獎的樂透君 (由 Brian拍攝)
樂透君的程式有特別針對不能重複出現相同的random數字處理,實際操作畫面請直接看下面影片:(連結自Maso's video)

[LEGO] NXT LCD大號數字顯示 by NXT-G

由於 Erin 正在製作 Lotto-bot (樂透機器人)供 MMUG 三月網聚使用,平常 NXT-G 輸出到 NXT LCD 上的數字顯示實在太小,所以利用 nxtRICedit 來製作大數字圖片並整理到 MyBlock 中供程式使用。

nxtRICedit 是一套免費又好用的黑白兩色階 for NXT LCD 的圖片編輯軟體,它相當簡單,短時間就可以上手。在手工製作數字 0 到 9 的圖片後,統一將圖片存到 C:\Program Files\LEGO Software\LEGO MINDSTORMS Edu NXT\engine\Pictures\ 裡,這樣在 NXT-G 的編輯視窗中才能選到你剛剛新增的圖片,nxtRICedit 編輯視窗如下圖:


使用 nxtRICedit 製做圖片不需要太擔心一開始的起始位置,當圖片被放置到 NXT LCD 後,它的起始位置會是以圖片有像素的部份最左最下邊界為 0, 0,再由 NXT-G 編輯視窗設定 x, y。

接下來開始製作 ImageNumber MyBlock:(關於MyBlock的基本製作方法請參照前篇)

說穿了,要用 NXT-G 編輯 NXT LCD 大數字顯示就是作手工,請努力將每一個數字分別使用 Display Block 對應到相對的數字圖片上,請記得每一個 Display Block 都需要接上資料線喔!

測試程式:


輸出如最上方圖片!完成!!
當完成的 ImageNumber MyBlock 可以串接其他 Sensor輸出的數字,只需要將輸出的數字分別作運算切出分開的數字再傳入相對應的 ImageNumber MyBlock 中就可以了呦!

[LEGO] NXT-G MyBlock 製作概要

玩了一兩天的NXT-G,雖然一開始被它的連連看編輯介面打敗,但是熟悉後又對它的超直覺編輯感到激賞,其中的 MyBlock更是方便使用者製作類似程式中的function或巨集,將常用的功能組織起來。
[NXT-G中的MyBlock圖示]

要製作MyBlock非常簡單,直接開個新檔編輯,不需要存檔就可以製作。以下利用在NXT畫面秀出Number來製作MyBlock。在NXT螢幕要秀出數字的話,需要使用Number to String + Display Block才可以秀出,由於它的使用率很高,所以將這個過程製作成 MyBlock來重複利用。
先想好MyBlock保留給外部設定的變數數量,Number to String Display一定要可以傳入數字,外加Display x y 的設定,所以最低限度共有三個變數需要傳入。

讓MyBlock有write功能:
1. 開新檔案。
2. 拉出Variable Block,選擇 Number1 / read mode,放置位置即使variable block不在鐵軌上也ok,如下圖:

3. 拉出 Number to String Block與 Display Block , Display block選擇文字模式,將要輸入的資訊連起來,如下圖:

4. 選擇要輸出為MyBlock的程式部份,用滑鼠框選 Number to String and Display block,框選後點選下拉式功能表 Edit / Make a new My Block

5. 填入MyBlock相關資訊,選擇你的要的 MyBlock Icon, 完成了!



6. 更換變數說明:連點剛剛製作出來的NumberToString Block,會進入它的編輯模式,直接變更Value1-3的文字儲存後退出即可。


[完成的Number to String Block]

結語,如果你使用的 MyBlock有資訊送出(Read)功能,就是將它要輸出的資料型態選擇對應的Block放置在畫面右方,唯一重點就是資料線一定要連上,圈選設為 My Block 的部份,你就會發現它會有欄位將資料送出了。

被儲存的MyBlock會被放在LEGO Default local folder:
我的文件夾\LEGO Creations\MINDSTORMS Projects\Profiles\Default\B…