[Flash] Image Zoom In/Out

  • Image Zoom In/Out
  • Download: ImageZoom.zip

    有用過Compiz Fusion的特效都知道使用Ctrl+滑鼠就可以任意在畫面上拉出一個範圍來放大,這裡簡單使用Flash的基本的zoom in/out的性質就可以產生類似的特效。

    在畫面上用滑鼠拉出的範圍即可放大。

    主要程式碼其實只有下面這兩段,其餘只是在處理矩形縮放,和範圍修正等訊息。

    private function zoomIn():void{
    var newX:Number = -startX*scale;
    var newY:Number = -startY*scale;

    if((newX+this.width*scale) < this.width){
    newX = -(this.width*(scale-1));
    }

    if((newY+this.height*scale) < this.height){
    newY = -(this.height*(scale-1));
    }

    var xScaleTween:Tween = new Tween(this, "scaleX", Strong.easeOut, 1 , scale, 1, true);
    var yScaleTween:Tween = new Tween(this, "scaleY", Strong.easeOut, 1 , scale, 1, true);
    var xTween:Tween = new Tween(this, "x", Strong.easeOut, this.x, newX, 1, true);
    var yTween:Tween = new Tween(this, "y", Strong.easeOut, this.y, newY, 1, true);

    xTween.start();
    yTween.start();
    xScaleTween.start();
    yScaleTween.start();
    }

    private function zoomOut():void{
    var xScaleTween:Tween = new Tween(this, "scaleX", Strong.easeOut, scale, 1, 1, true);
    var yScaleTween:Tween = new Tween(this, "scaleY", Strong.easeOut, scale, 1, 1, true);
    var xTween:Tween = new Tween(this, "x", Strong.easeOut, this.x, 0, 1, true);
    var yTween:Tween = new Tween(this, "y", Strong.easeOut, this.y, 0, 1, true);

    xTween.start();
    yTween.start();
    xScaleTween.start();
    yScaleTween.start();
    }

[Flex] ZendAMF & Flex

  • ZendAMF & Flex
  • Download: SearchCourseZendFlex.zip

    對應到[Flex] AMFPHP and Flex[Flash] ZendAMF & Flash再寫一篇ZendAMF & Flex,前置工作請參考上一篇(安裝ZendAMF,撰寫php code)。

    撰寫mxml:(SearchCourseZendFlex.mxml)

    一樣是使用Remote Object來完成,只是這裡我使用endpoint來取代之前要設定service-config,別忘了destination要改成zend,其餘的code跟之前幾乎沒差別,編譯後的畫面也跟之前的完全一樣。

[Flash] ZendAMF & Flash

  • Zend AMF & Flash
  • Download:SearchCourseZendFlash.zip

    Flash Remoting另一解決方案 - ZendAMF,一個由Zend公司所打造的framework,官方下載網頁如下:

    http://www.zendframework.com/download/amf

    解壓縮後將裡面的library內的zend資料夾複製到你想放置的地方,這裡我將zend放置在/var/frameworks/資料夾底下。這裡我沿用[Flash] AMFPHP and Flash這一篇的範例來講解。

    撰寫php: (SearchCourse.php)

    雖然說是沿用之前的範例,但是有小部份要修改一下,

    以getAllCourse來說,原本是直接回傳query的資料,現在必須先轉成陣列才回傳,其他函式也要照做。

    (Zend.php)

    這裡我使用的是相對路徑,所以你在使用請確認路徑是否與你的環境相符。寫完後將上面兩個php檔案放到/var/www/,然後在瀏覽器上執行http://localhost/Zend.php,如果有看到下面的畫面代表設定成功。

    撰寫actionscript:

    大部分的code跟之前差不多,只是刪除了一些多餘的寫法。

    一樣是使用NetConnection跟Responder物件來完成。

    以onDgResult()來說,我使用最基本的addItem來載入資料到dataGrid裡。

    我把SearchCourse.php跟Zend.php都放在/var/www/底下,所以在SearchCourse.fla的影格一的actionscript如上寫法,如此就完成ZendAMF與Flash的溝通,畫面跟之前的一模一樣。

[Flash] Regular Expression

  • Regular Expression
  • Download: RegExpre.zip

    對於Perl這類語言來說,Regular Expression早已運用到淋漓盡致,而ActionScript在2.0之後才開始支援RegExp,這裡我以五個比對範例來簡單介紹Flash的Regular Expression:

    這五種格式比對的樣式如下:

    /*ID*/
    ^[A-Z][1-2]\d{8}$

    /*Number*/
    ^[-+]?\d*\.?\d+([eE]\d+)?$

    /*E-mail*/
    ^[a-z0-9._]+@[a-z0-9.-]+\.[a-z]{2,6}(\.[a-z]{2})?$

    /*IP*/
    (25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$

    /*TEL*/
    ^\(?0\d{1,2}\)?-?\d{3,4}-?\d{4}$

    片段程式碼:

    可以看到RegExp的使用方法很簡單,問題是在於比對的樣式,剛開始學Regular Expression難免會覺得這是什麼...&︿%$%,一旦漸漸了解之後,你會發現Regular Expression會比自行撰寫string pattern match函式還快的多,也精準的多(效能就得視你用什麼語言來寫)。由於正規表示式的基本符號意義不少,有興趣者可以參考下面的網頁:

    Regular Expression Basic Syntax Reference

    BTW.使用UI的fla檔還真不小,以後的範例可能會考慮以Flex或者ActionScript Project來寫。

[Flex] Login Control

  • Login Control
  • Download: Login.zip

    這裡使用Flex跟AMFPHP來實做基本的Login System,預覽畫面如下:

    當登入成功之後會進入下一個頁面:

    資料庫準備:(LOGINDB.sql)

    在下載包裡有sql資料,你可以直接匯入到你的Database即可。

    Service準備:(LoginCheck.php)

    撰寫 mxml:(Login.mxml)

    這裡列出核心的ActionScript碼:

    其餘詳細的部份請參照完整的原始碼,或者是這一篇的設定[Flash] AMFPHP and Flash

    這一篇所要撰寫的功能其實很簡單,很多語言也能夠輕易達成Login Control,只是對於使用Flex跟Flash的設計師來說安全問題會比介面華麗來的更重要,尤其是現在的swf decompiler做得非常好,如果你將要保護的資訊包在swf裡面,那會是很容易被反解的,光只是這一點就可以讓你的網站致命,更別提AMFPHP與Flex之間的傳輸,以及PHP與MySQL的安全問題,有時間再針對安全部份再寫一篇吧!

[Flex] Layout on Firefox

  • Layout on Firefox
  • 當我試著在ubunut上的Firefox 3去連SearchCourse時,赫然發現我的Layout出血,hscroll bar就這麼跑出來了,如下圖:

    有趣的是同樣的網頁我在windows上的IE7以及Firefox 3都正常(看樣子標題應該要改成Layout on Linux's Firefox...mess-up),我試著手動設定寬長,也試著開啟truncateToFit,可是都無效,最後只好使出以往在Gtk上的設計經驗,使用VBox跟HBox,問題就給我解決了。修正後的元件outline如下:

    當然VBox跟HBox不是說加上來就沒事,在設計 Layout的過程中一開始當然還是會手動拉一下VBox跟HBox的長寬,但是我的習慣是最後要Compiler之前VBox跟HBox的width跟Height都會設成100%,這時你可能會問那誰來決定VBox跟HBox的寬長,當然就是包在這些Box裡的元件來設定寬長啦!

[Flex] Flex and AIR

  • Flex and AIR
  • Download: SearchCourseAIR.zip

    [Flash] AMFPHP and Flash[Flex] AMFPHP and Flex這篇之後,我們可以用同樣的範例(真好!一個範例用三篇)製作AIR的SearchCourse,在Flex裡面要將Flex的專案轉成AIR是一件很簡單的事情,只需要新增一個Flex Project,然後選擇AIR類型,並將mxml的碼複製到你的AIR原始碼裡就可以了,只是大小可能要稍微調整一下,如果你懶得自己剪貼,可以下載我的原始碼來參考。成果如下:

    轉換固然簡單(因為這一點Adobe做的很好),只是此時要思考的是既然要產生AIR的程式,還要繼續使用Remote Database(MySQL, Oracle....)嗎?還是像這一篇一樣[Flash] SQLlite & AIR選擇Local Database(SQLlite),我想這才是程式設計真正要考量的事情。

[Flex] AMFPHP and Flex

  • AMFPHP and Flex
  • Download: SearchCourse.zip

    [Flash] AMFPHP and Flash這一篇,這次我們以Flex為基準與AMFPHP結合製作同樣功能的範例,AMFPHP安裝以及前製作業請參考上一篇。

    功能都一樣,只是底色換了。

    當你建立好AMFPHP以及資料庫後,那就準備新增Flex Project,開始撰寫mxml碼。

    程式一開始我們就先定義RemoteObject,source的部份就是我們的php class "SearchCourse",id名稱自取。我們要呼叫的SearchCourse member function都定義在裡面,如上圖。

    所有的ActionScript碼都寫在script區塊裡,基本上程式碼跟在Flash上的ActionScript 3.0差不多,只是仍有一些物件讓我很頭痛,例如ComboBox就是一個例子,它這個物件在Flex上的特性跟方法跟在Flash上差很多,所以使用起來很頭痛。詳細的寫法你可以參考原始碼。

    程式碼撰寫好後要設定編譯器參數,在Project->Properties->Flex Compiler,加上如下參數:

    -services "services-config.xml"

    services-config.xml這個檔案在我的原始碼裡有提供,裡面唯一要改的是

    endpoint uri="http://localhost/amfphp/gateway.php"

    設定成你的amfphp gateway的位置,一切就緒後編譯你的專案測試結果啦!

    如果你想要了解更多Adobe Flex的使用資訊可以參考下面的網頁:

    Adobe: Flex in a Week video training

[Flash] AMFPHP and Flash

  • AMFPHP
  • 一直想找一個好的Flash Remoting的方案,忽然間發現這個由PHP所撰寫的AMFPHP,可以讓Flash跟PHP溝通,如此一來我們就可以透過他來連接到MySQL,下載位置如下:

    http://www.amfphp.org/

    解壓縮後放到你的網頁目錄底下(/var/www),然後開啟瀏覽器打上:

    http://localhost/amfphp/browser/

    如果有看到一個用Flex所撰寫的管理頁面就代表連接成功,如下圖:

    這裡我撰寫一個很簡單的應用範例來展示amfphp如何使用。

  • SearchCourse
  • Download: SearchCourse.zip

    程式介面:

    很單純的DataGrid, ComboBox跟search button,目的是要實做簡單的MySQL資料庫讀取功能。

    當我們選擇Course類型之後重新搜尋就會回傳對應的資料,同理,選擇Day就會過濾出符合Day的資料,了解這個程式的功用之後我們可以開始設計(~先有成品再回頭設計@@)。

    網站系統建立

    這部份你可以參考我的部落格文章:

    [Windows] ActiverPerl, Apache, PHP, MySQL

    [UTips. 52] Apache, PHP, MySQL, phpMyAdmin

    資料庫建立 (COURSE.sql)

    為了方便測試使用,我將定義好的資料庫給匯出,你只需要匯入下載包裡的COURSE.sql到你的資料庫即可。

    建立Services ( SearchCourse.php)

    這部份需要撰寫一些簡單的PHP碼,如果你不曾撰寫過PHP,你可以參考下面的網頁:

    http://www.w3schools.com/PHP/DEfaULT.asP

    construct裡面的SQL連線資訊請置換成你自己的,此php僅供測試方便使用,並未針對

    Exception跟Session做處理。

    將SearchCourse.php放到amfphp的Services資料夾裡,例如:/var/www/amfphp/services/底下,你可以回到amfphp的browser看看SearchCourse這個class是否運作正常。

    amf對PHP格式要求很多,剛開始撰寫難免會東錯西錯,久了就習慣了。

    撰寫ActionScript

    重點來了,怎麼說ActionScript還是主要的核心。

    在建構子裡會呼叫initConn()這個函式,進行gateway的連接:

    1. 建立connection物件
    2. 連線到gateway。
    3. 建立responder物件,並設定對應的EventHandler,也就是onFault, onXXResult...
    4. 呼叫Services裡的函式,舉例來說SearchCource.getAllCourses,逗點前面的SearchCourse就是我們在SearchCourse.php裡面所建立的Class,而逗點後面的getAllCourses就是SearchCourse的Member Function。

    .透過者這幾行的設定就可以連上PHP,詳細部份請參考下載原始碼,程式碼會比較長原因式因為功能的實現,並不是說使用amfphp需要寫那麼多code。

[Windows] ActiverPerl, Apache, PHP, MySQL

  • ActiverPerl, Apache, PHP, MySQL
  • 因應這一篇[UTips. 52] Apache, PHP, MySQL, phpMyAdmin,所以再寫一篇給Windows系統的版本。

  • ActivePerl
  • 官方下載位置:

    http://www.activestate.com/activeperl/downloads/

    下載完後點開一路裝到底,最後請設定一下系統變數,將C:\Perl\bin加入到你的系統變數裡(假如那是你的安裝路徑)。

    系統變數設定->控制台->系統->進階->環境變數,在系統變數那邊找一個叫做Path的變數,加入C:\Perl\bin這個路徑即可。

  • Apache
  • 下載路徑如下(我偏好no_ssl的版本,因為openssl部份我會另行安裝):

    http://apache.cdpa.nsysu.edu.tw/httpd/binaries/win32/

    下載完後一路裝到底,過程中如需要輸入Domain Name則先輸入localhost即可。

    在瀏覽器上輸入http://127.0.0.1有看到It works!代表你安裝成功啦!

    (有掛proxy者請先把proxy給放掉!)

  • MySQL
  • 下載位置如下(我會選擇Windows ZIP/Setup.EXE這個版本,之後如果需跟要其他MySQL API做結合時就不必在下載一次SDK,如果你沒有這個打算的話那就下載Windows Essentials的版本吧! ):

    http://dev.mysql.com/downloads/mysql/5.1.html#win32

    下載完後一路裝到底,只是別忘了你設定的root密碼就是了(在設定過程中可以選擇將MySQL加載到path這個系統變數裡,還有不要打開root的遠端登入)。

    設定完畢後你可以在命令提示字元底下輸入:

    mysql -u root -p

    打完密碼之後有成功登入代表MySQL安裝成功啦!

  • PHP
  • 下載位置如下(一直以來我都是選擇手動安裝PHP,所以這裡我只介紹如何手動裝PHP啦!所以請下載php zip package):

    http://www.php.net/downloads.php

    1. 下載後解壓縮至你想放的地方,這裡我們以C:\php為例。

    2. 進入php目錄,並將php.ini-dist重新命名為php.ini

    3. 打開php.ini,搜尋

    extension_dir = "./"

    改成

    extension_dir = "C:\php\ext\"

    4. 分別搜尋

    ;extension=php_mysql.dll

    ;extension=php_mcrypt.dll

    改成

    extension=php_mysql.dll

    extension=php_mcrypt.dll

    也就是把 ; 這個符號去掉,目的是要開啟支援mysql的module,其餘的module請依照你的需求開啟吧!

    5. 打開C:\Program Files\Apache Software Foundation\Apache2.2\conf\httpd.conf,在最底下加入如下指令:

    LoadModule php5_module "c:/php/php5apache2_2.dll"

    AddType application/x-httpd-php .php

    PHPIniDir "c:/php"

    6. 把c:\php\底下的libmysql.dll以及libmcrypt.dll複製到c:\windows\system32底下,雖然libmysql.dll這個檔案在MySQL裡也有,但是我的經驗是就算php所提供的版本比你的MySQL還要舊一點,還是請先以php提供的為準。

    7. 重新啟動apache,然後將下面的指令存成info.php

    把info.php放到你的網頁目錄底下(C:\Program Files\Apache Software Foundation\Apache2.2\htdocs),然後開啟瀏覽器輸入http://127.0.0.1/info.php

    如果你有看到Php的logo然後下面有一堆文字那就代表你安裝成功了,看完那些資訊後請記得把info.php刪掉。

  • phpMyAdmin
  • 下載位置如下(沒事別下載rc版,需要中文請下載all language):

    http://sourceforge.net/project/downloading.php?group_id=23067&use_mirror=nchc&filename=phpMyAdmin-3.1.1-all-languages.zip&22043765

    下載完畢解壓縮到你的網頁目錄資料夾下。

    將config.sample.inc.php重新命名為config.inc.php

    打開config.inc.php,並在$cfg['blowfish_secret'] = ''輸入任意的值,如下(請勿照抄):

    $cfg['blowfish_secret'] = '3fSDT46sGWE3&U8(&*s#dsfejpv3'

    在瀏覽器上輸入:

    http://127.0.0.1/phpMyAdmin/index.php

    如果你能夠看到無錯誤的登入畫面並且正常登入,代表你的php和mysql設定都正常了。

  • MySQL GUI Tool

  • 下載位置如下:

    http://dev.mysql.com/downloads/gui-tools/5.0.html

    基本上phpMyAdmin已經足夠我們使用,如果你不習慣phpMyAdmin操作方式,你可以使用MySQL Query Browser等工具來幫助你完成SQL的使用。

Adobe MAX 2008/2009

  • Adobe MAX 2008/2009
  • 這個Adobe的盛會會訂成2008/2009是因為前兩場分別在歐洲跟美國是辦在去年的11~12月,而第三場在日本則是這個月底,官方頁面如下:

    http://max.adobe.com/

    keynotes的影片可以到Adobe TV去觀看,除了Flex之外,另外還有Adobe Flash Catalyst以及Alchemy等有趣的產品與新技術介紹。

    http://tv.adobe.com/

[Flex] Flex SDK 3

[Flash] PaperVision3D

  • PaperVision3D
  • 儘管Adobe Flash CS4有支援簡單的z-axes的特效,但是光只是這樣可能還不夠。我們可以使用由一群對Flash支援3D特效所盡心開發出來的API-PaperVision3D,官方下載位置如下:

    http://code.google.com/p/papervision3d/

    For Flash:

    我建議下載Papervision3D_rev859.zip,將它解壓縮後回到Flash CS 3/4,edit->preference->ActionScript->ActionScript 3.0 Settings,把你剛剛解壓縮的路徑給加上去即可。

    For Flex:

    除了可以下載Papervision3D_rev859.zip之外,為了省事建議你下載Papervision3D_rev859.swc,然後回到Flex,project->properties->ActionScript Build Path->Library Path->Add SWC folder,將你存放Papervision3D_rev859.swc的位置給加上去即可。

    雖然PaperVision3D有支援ActionScript 2.0,但是為了效能好還是建議使用ActionScript 3.0來寫吧!

[Flash] ECMAScript 4.0

  • ECMAScript 4.0
  • 大部分人在使用ActionScript3.0時一定很納悶為什麼我沒有辦法 overloading,因為ActionScript3.0本身不支援overloading,我們只能期待ActionScript4.0能夠遵照ECMAScript 4.0的定義把一些該有的東西加進來啦!關於ECMAScript 4.0與ActionScript3.0的差異可以參考下面的網頁:

    http://moock.org/lectures/newInECMAScript4/

    以及這個Proposed ECMAScript 4th Edition – Language Overview

    http://www.ecmascript.org/es4/spec/overview.pdf

[Flash] onLoad() in ActionScript 3.0

  • onLoad() in ActionScript 3.0
  • Download: snow.zip

    雖然這已經不是個新問題,但是許多從ActionScript 1.0/2.0跳到3.0的設計者剛開始都會在找onLoad()這個function,在ActionScript3.0裡已經沒有onLoad這個event,取而代之的是class constructor,或者是使用Event.ADDED這個Event,這裡我用一個簡單的範例來展示如何在ActionScript 3.0做到像以往的onLoad()的功能。

  • Snow
  • Snow特效算是Flash很經典的題目,幾乎很多書籍都喜歡拿這種特效來做教材,下載版裡我使用SnowDemo這個Class來完成Snow的特效。

    Class Constructor

    將所有初始化要做的設定放在SnowDemo的Constructor裡(這也是平常我們在OO的語言裡會做的方式),遞增x,y的位置我把它擺在TimerEvent.Timer的handler裡(onTimerStart)。

    一旦Snow這個物件超出影片的高度,再將此物件拉回到最上面並且把alpha的值歸原1。

    在Snow.fla的影格一裡面載入SnowDemo這個Class並且產生50個SnowDemo這個物件,如此Snow的特效就完成了,更詳細的細節請參照原始檔。

    Event.ADDED

    前面是使用Class Constructor來替代onLoad的Event,如果你不習慣使用Class的形式,你還是可以使用以往ActionScript 2.0的型態來產生特效,寫法如下:

    在將snow加入MovieClip之前先加上Event.ADDED這個eventlisnter,當snow被加上到MovieClip之後就會去執行onSnowAdded這個function,效果也會跟onLoad一樣。

    關於更新x,y的值最好使用timer來達成才不至於受限於fps的更新速度。

[C/C++] Bitmap Bit Conversion

  • Bitmap Bit Conversion

    Download:bmpBitConversion.zip

    現在有太多現成軟體跟API可以做影像處理,所以這裡我只簡單的介紹基本的Bitmap 24 bits轉 8 bits。

    一個標準全彩色的圖,每一個pixel佔用3個bytes(也就是24個bits),每一個byte各自代表著Red, Green, Blue,由這三個原色所調配出來16.7百萬色彩(2^24)。今天要將24 bits的Bitmap圖轉成 8 bits,使用最簡易的轉換方式,R跟G各取前3bits在加上B的前2bits合起來就8個bits,簡單的說概念就只是這樣。

    一旦要將圖片的色彩資訊轉成非24bits的bits時,你必須使用調色盤來讓圖片系統去讀取對應的色彩資訊,例如上面的調色盤(8 bits 256色)就是這個範例在使用的。

    Bitmap的檔頭定義你可以參考微軟的Bitmap Info Header,依造不同的系統會有不同的bitmap header,有關OS/2的bitmap的定義可以參考這個網頁OS/2 Bitmap File Format Summary,另外你還可以參考這個部落格作者對bitmap格式詳盡的解說"點陣圖(Bitmap)檔案格式"

    我這個範例程式只是簡單的將24bits圖轉成8bits,其他問題並沒有一律考慮進去,僅供參考。

    範例輸出畫面如下:

    [左圖]是24bits全彩原始圖,[右圖]則是轉換成8bits之後的圖,由於我們的演算犧牲掉多一點的藍色資訊,所以轉換後的圖會偏紅綠多一點。(上面的圖已經由png重新壓縮過,所以與原始資訊會有些微的誤差)

[Flash] SQLlite & AIR

  • SQLlite & AIR
  • Download: DailyNotes.zip

    前面幾篇有稍微提到過Adobe AIR跟SQLlite,這裡我以Adobe AIR為開發平台結合SQLlite來設計一個簡單的記事程式,如下圖(當然下面這個程式用其他語言來寫可以說是輕而易舉(C#,VB, C++ & Qt),但是對ActionScript與Flash來說算是一個轉折點(Desktop Application)):

    上面的範例我大量使用UI Component,所以原始檔就相對大了一些。使用DataGrid顯示SQL撈回的資料,搭配SQLlite來做資料的儲存,這裡我只簡單的實做插入跟刪除的動作,結合資料庫的特性,搜尋也將會變得更容易些。日期的部份我則是直接使用Flash的Date Class,所以使用者不必自行輸入(另外你也可以使用SQL本身的日期相關函式)。

    [Flash] Global Time

    • Global Time
    • Download: time.zip

      這支小程式是我很多年前打工時幫公司寫好玩的,當時使用的是ActionScript 1.0且那時設計經驗不足,程式碼落落長一寫就是3~4百行,現在從新使用ActionScript 3.0的Date類別撰寫,才發現AS3的Date類別已經定義的很完善了,省得我自行去處理跨年跳日轉月閏年等問題以及轉換成字串的輸出,這些工作現在都直接交給Date物件處理,所以整個小程式幾十行就完成了。

      大致說明一下這個小工具的功能,它主要的目的是讓不同國家的瀏覽者可以看到本地時間之外同時也可以看到台灣時間,如果本地是台灣的話,另一個時區我預設為舊金山,你也可以改成你自己要的。

      時區劃分依造微軟系統的GMT區塊而定,共分為GMT-12~GMT+13時區,如果不在時區上的將列未知時區。台灣為GTM+8,所以在Flash裡面時區差值(timeZoneOffset)為-480(-60*8),依造這些誤差值你就可以輕易的換算到其他國家時區。

    [Flash] Working with Sound in AS3

    • Working with Sound in AS3
    • Download: MusicPlayerAS3.zip

      繼去年四月這一篇[Flash] Working with Sound in AS2之後(實際上那一篇的程式碼是兩年多前寫的),隔了將近8個多月我終於有時間將它改成ActionScript 3.0的版本,同時也對介面與些微的錯誤做了修正。

      整個程式架構是承襲的前一篇的設計,只是語法改用ActionScript 3.0來撰寫(雖然是用ActionScript 3.0 來撰寫,但是程式的撰寫型態還是使用以往的模式寫死影格上,並沒有獨立出一個類別)。在這個範例裡我並沒有將ActionScript 3.0在Sound Class新功能給表現出來,但是裡面用了一些ActionScript 3.0特有的新物件,例如Timer,有效解決seekbar在設計上的問題。播放器上得所有物件除了按鈕是使用common libary裡面的之外,其餘都是自己手工設計,相對的原始碼就比較小,只是很花時間就是了。

      另外關於XML的部份在ActionScript 3.0裡也變得很方便使用,原本在AS2那長長的程式碼在AS3裡使用一個XMLList物件就可以完成,可以說是相當方便。

      更詳細的資訊請自行參考原始碼跟前一篇文章吧!

    [SQL] SQLite

    • SQLite
    • SQLite是一個無須伺服器內建資料庫引擎的小型資料庫軟體套件,對於小量資料處理且需有規則的關聯規劃時,SQLite會是一個不錯的選擇。官方頁面如下:

      http://www.sqlite.org/

      ubuntu內的apt-get是有自帶sqlite,但是版本較舊,還是建議您去官方下載安裝吧!

      如果你不熟悉Structured Query Language(SQL),可以參考下面的頁面有基本的指令介紹

      http://www.sqlite.org/lang.html

    [SQL] Lita - SQLite Administration tool

    • Lita - SQLite Administrator Tool
    • 一套由AIR開發出來的圖形化管理工具,可以省去你自行用SQL語言查詢所消耗的時間,官方下載位置如下:

      http://www.dehats.com/drupal/?q=node/58


    [UTips. 65] Adobe AIR

    [UTips. 64] gtk-recordMyDesktop

    • gtk-recordMyDesktop
    • 桌面錄影工具,安裝方式如下:

      sudo apt-get install gtk-recordMyDesktop


    [UTips. 63] trickle

    • trickle
    • 除了可以使用wondershaper來控制整個網路平寬之外,你也可以使用trickle來設定個別程式的上下傳的速度,安裝方式如下:

      sudo apt-get install trickle

      設定方式如下(假設要對MultiGet設定下載100Kb/s,上傳10Kb/s):

      trickle -d 100 -u 10 MultiGet

      輸入完上面的指令就會啟動MultiGet這個程式並且設定速度限制。另外你也可以使用trickled來設定一個速度參考值,讓其他軟體沿用這個速度限制。

      trickled -d 100 -u 10

      tricke MultiGet

      trickle amule

      trickle firefox

      上面的作法就是讓MultiGet, amule, firefox都沿用上傳10Kb/s,下載100Kb/s的限制,只是不解的是firefox的部份我總是限制不成功。

    [UTips. 62] Wondershaper

    • WonderShaper
    • 頻寬管理除了可以使用iptables之外,也可以直接使用wondershaper這個現成的scripts來幫你設定,安裝方式如下:

      sudo apt-get install wondershaper

      使用方式如下(假設要限制全體網路下載100KB/s,上傳8KB/s):

      sudo wondershaper eth0 800 64

      清除方式如下:

      sudo wondershaper clear eth0

      (你的電腦可能不會是eth0,請自行參閱網路設定。)

      如果你要將此設定設為永久設定,你可以編輯下面的檔案:

      sudo gedit /etc/network/interfaces

      加入下面的指令:

      up /usr/sbin/wondershaper eth0 1000 100
      down /usr/sbin/wondershaper clear eth0

      由man文件可以得知wondershaper裡面上下傳所使用的單位是Kbits/s,並不是Kb/s,所以在設定時要注意一下。

    [UTips. 61] QuickStart

    • QuickStart
    • Ubuntu底下的設定檔也不好,有時候難免也會忘記所在的路徑,或者甚至連檔名都不記得了,這個時候QuickStart也許幫得上忙。官方下載頁面如下:

      http://quickstart.phpbb.net/viewtopic.php?f=8&t=11

      由上圖可以看到QuickStart提供了十多項的功能,可以省去我們自行寫scripts的時間。

    Orange - data analysis tool

    Installation pip install orange3 Run orange python -m Orange.canvas