Aug 23, 2007

AIR : BigHeadEditor v1.0


應用了前兩篇分享的原理,Erin 製作一個無聊的 Webcam 大頭貼編輯器程式來認識 AS3 與 AIR,有興趣的可以下載安裝玩玩...=P
﹝>>下載試玩 Beta2以後版本<<﹞
安裝:
  1. 請事先安裝好Adobe Integrated Runtime (AIR)主體 ,這樣以後只要點選 .air 檔案即可自動安裝。(只需要裝一次喔!) Edit: 10/01/2007 AIR Beta2 released,請記得更新

  2. 執行 BigHeadEditor.air 選擇你想要的安裝路徑,預設為:C:\Documents and Settings\使用者名稱\Local Settings\Application Data\BigHeadEditor

使用說明:
  1. 記得在選擇背景圖樣前連接上你的Webcam呦!

  2. 拍完照點選「SAVE?」選擇你要儲存的資料夾就可以看到美美的成品囉!


如何新增自訂的背景圖樣:
  1. 先利用影像處理軟體製作 240x180 pixels的透明背景.png or .gif圖檔。

  2. 將輸出的檔案存至 安裝路徑的"image"資料夾內即可。預設為:C:\Documents and Settings\使用者名稱\Local Settings\Application Data\BigHeadEditor\images

程式畫面:


Aug 21, 2007

AIR:Flash CS3 Professional Update

剛剛 Ticore 告知官方版AIR for Flash CS3 update今天release了,當然馬上跑去下載,更新完後發現了幾個不一樣的地方:
1. commands新增了兩個功能,一為AIR打包資訊設定,另外一個是打包工具
2. 新增檔案類型多了AIR 1.0
3. 測試檔案很簡單的只要直接test movie即可

XD 真是太方便了!

Aug 20, 2007

AS3組件在AIR中的怪異現象...

由於 Erin 很懶在CS中寫code new出AS3組件再放到stage上,常常手動拉出組件人工排版,結果在執行AIR模擬發現了一個怪異現象...輸出swf正常的,但是模擬AIR運行就會發生慘狀...以下是案發現場實況:


主畫面上有兩個frames,每個frame都放著一個button組件,frame1 button命名為"btn"
//main timeline frame action
btn.addEventListener(MouseEvent.CLICK, doClick);
function doClick(e:MouseEvent) {
gotoAndStop(2);
}
stop();


function doClick中的gotoAndStop(2)指的是main timeline,正常執行結果是按下btn後會跳到第二個frame,結果在AIR中會成這樣:


居然變成呼叫組件gotoAndStop(2)!!!....這種現象通用於有兩個frames以上的AS3組件...WHY???

Aug 17, 2007

AIR 載入特定資料夾圖檔

這只是一個簡單的應用,為的是接下來要結合前篇Webcam抓圖要作一個應用App。

一個子資料夾名稱為"imgs" 裡面有一堆可被Flash載入的圖檔,想要不分類的將imgs檔案夾內圖檔全部載入,這邊用到File類別的listDirectory()可以列出所有在指定資料夾內的物件。

package {
import flash.display.*;
import flash.net.URLRequest;
import flash.filesystem.File;

public class OpenDirTest extends Sprite {
public function OpenDirTest() {
var fd:File=new File("app-resource:/imgs");
var arr:Array=fd.listDirectory();
//取得資料
for (var i:int=0; i< arr.length; i++) {
var lb:Loader=new Loader();
lb.load(new URLRequest("imgs/"+arr[i].name));
lb.x=Math.random()*300;
lb.y=Math.random()*200;
//亂數擺到畫面上
addChild(lb);
}
}
}
}

AIR 簡易Webcam抓圖測試



這篇其實是參考qop's blogAIR 存圖測試變形而來,只是多加了Webcam去做抓圖的媒介,請先下載安裝as3corelib,它會以component的形式存在,使用時直接從component視窗拉出來後刪掉保留在library即可。

package {
import flash.utils.ByteArray;
import flash.media.Camera;
import flash.media.Video;
import flash.events.*;
import flash.display.*;
import com.adobe.images.JPGEncoder;
import flash.filesystem.*;

public class WebcamTest extends Sprite{
private var video:Video;
public function WebcamTest() {
stage.scaleMode = StageScaleMode.NO_SCALE;
showVideo();
btn.addEventListener(MouseEvent.CLICK, doClick);
}
public function showVideo() {
var camera:Camera = Camera.getCamera();
if (camera != null) {
video = new Video(320,240);
video.attachCamera(camera);
video.x=40;
video.y=20;
addChild(video);
} else {
trace("You need a camera.");
}
}
private function doClick(e:MouseEvent):void {
var file:File = File.applicationResourceDirectory;
var bd:BitmapData=new BitmapData(320,240, false, 0xffffff);
bd.draw(video);
var jpg:JPGEncoder = new JPGEncoder(80);
var ba:ByteArray = jpg.encode(bd);
file = file.resolve("test.jpg");
var fileStream:FileStream = new FileStream();
fileStream.open(file, FileMode.WRITE);
fileStream.writeBytes(ba);
fileStream.close();
}
}
}


輸出圖片:test.jpg

AIR 的第一次接觸 by Flash CS3

嚴格說起來,用CS3來開發AIR App不是一件很明智的事情...
理由很簡單,就是CS3實在太難用了!!難搞的可拖曳就變半透明又愛黏來黏去的工作視窗;想當機也不通知一聲就莫名奇妙當掉;不知道為啥操作一下換個字型之類的程式就傻掉;編寫程式工具也沒有啥咪提示碼等等...但是,Flash CS3製作的swf打包出來的AIR檔size比Flex builder打包出來的小很多,為了這一點,只好硬著頭皮玩下去了...

開發環境:請參考qop's blog兩篇教學 (裡面還有很多篇AIR教學喔!)
Create AIR Apps in Flash CS3
package a flash app as an AIR file (for windows)

如果沒意外的話,到這邊應該就可以開始使用CS3來開發AIR Apps嚕!

Test in Apollo:
如果想要測試swf在AIR runtime執行的效果,請別太相信剛剛安裝的Commands / Test in Apollo 這個指令,常常是執行後dos視窗閃一下就不見了( 為啥不知道..請知道的告訴我,謝謝! ),所以最保險的測試方法是,執行 Commands / Test in Apollo 後,它會自動幫你生成幾個檔案,裡面有個 檔案名稱-app.xml,接下來,點選開始列 / 執行,直接打入 "cmd"開啟命令提示字元 (dos視窗 )
cd C:\air_b1_win_sdk_061107\bin
adl "你的測試檔案路徑\檔案名稱-app.xml"

這樣測試就變的很方便嚕!

Aug 4, 2007

ExtendedKey.as in Flash CS3

當使用Flash CS3開發Flash lite2.x contents時,如果有操作Soft keys的語法而使用ExtendedKey.SOFT1 or ExtendedKey.SOFT2 ,在Test movie 就會發現Flash找不到ExtendedKey.as 而無法解譯成功,

最簡單的解決方法就是將Flash 8 內的ExtendedKey.as 複製到:
C:\Documents and Settings\使用者名稱\Local Settings\Application Data\Adobe\Flash CS3\en\Configuration\Classes\FP7 即可!

或者直接copy下列語法另存新檔為ExtendedKey.as 存入上述位置: (其實只是傳入常數定義)
//****************************************************************************
// ActionScript Standard Library (Mobile specific)
// ExtendedKey object
//****************************************************************************

intrinsic class ExtendedKey
{
static var SOFT1 :String = "soft1";
static var SOFT2 :String = "soft2";
static var SOFT3 :String = "soft3";
static var SOFT4 :String = "soft4";
static var SOFT5 :String = "soft5";
static var SOFT6 :String = "soft6";
static var SOFT7 :String = "soft7";
static var SOFT8 :String = "soft8";
static var SOFT9 :String = "soft9";
static var SOFT10 :String = "soft10";
static var SOFT11 :String = "soft11";
static var SOFT12 :String = "soft12";
}

Aug 1, 2007

KUSO 極致的online game - 清廉战士



朱學恆的路西法地獄看到了一篇超級Kuso的真實online game介紹,天ㄚ!對岸的「清廉戰士」是繼 魔獸之後又一online game會讓 Erin 想要去玩的,真的不能不讚嘆它的內容是多麼吸引人啊!剛剛試著去下載安裝,居然還出現「紧急公告 清廉战士自测试以来,得到广大网友热情支持,在线人数超过服务器及程序限制, 现正在进行硬软件升级改造,敬请广大网友期待! 」!!XD 真的等不及想要玩玩它啊!!

[App] 國道計程收費速算器 2.0

之前的版本跟目前 國道計程官網 所列資料誤差很大,這支 App 也一直有人在使用,所以為了答謝愛用者只好做了一次大更新,因為對 CoronaSDK scrollView widget 有點怨言,所以 iOS 版本採用 Swift3 重寫了一遍,不過 Android 版本還是維...