Adobe Air & Adobe Flex & ActionScript & Mobile Dev & HTML5 & RIA & User Experience
由於 Google Swiffy 還不斷在修改,也沒有正式文件 很多 API 功能需要自行測試才會知道是否能用 雖然有支援基本 trace 功能,但是訊息都會變成一般字串輸出到 debug console 沒辦法像 JS or HTMLElement 物件那樣可以直接在 console 展開觀察屬性 另外,目前也不支援 ExternalInterface, fscommand 也不能讀取外部資料 可是明明都已經被轉成 JS 卻不能與 Swiffy runtime 外面 js 溝通取得 window, document,感覺這樣很笨 不過呢!測試著 function 時,突然發現以下的 AS 寫法 在轉換為 Swiffy 後,居然能取得 JS Window 物件! function getDomWindow():Object{ return (function(){ return this; }).apply(null); } 有了 JS Window [...]
最近 Google 推出了 Swiffy Extension 可以將 Flash SWF 檔案轉換為 HTML5/JS 版本 只要是 Flash CS4 以上都可以安裝 目前最新版本為 Swiffy 3.6.1 轉換功能目前已經支援大部分 ActionScript 1.0, 2.0 語法 一般按鈕事件、Clip 事件都已經支援了 影格聲音只支援 Event Sound 只能跑一次,無法 Loop 文字欄位只支援靜態文字,不能用程式改變內容,也不能輸入 動畫部分沒仔細測試,不過看起來一般 Flash 5 動畫都能正常轉換了 實際拿十年前做的一些小東西來轉轉看 滑鼠拖尾效果 HTML5 版 : Flash 版 以高速左右移動模擬物件 blur fade out 效果 HTML5 版 : Flash 版 簡單的 CAI 依照動畫提示順序將 [...]
論壇上有人問到 Chrome 瀏覽器上跨域 iframe 會出現 Flash 安全性的警告 而且在 Google Code 上也有人提出相同的問題 http://code.google.com/p/swfobject/issues/detail?id=481 http://code.google.com/p/chromium/issues/detail?id=76748 反覆測試之後,將問題簡化如下: a.com 下的 HTML 網頁,包含一個 b.com 來的 iframe 網頁 b.com iframe 網頁內使用 javascript touch 一下 window.top.location a.com 在 onload 完成後,動態建立一 Flash 物件 Flash 物件內透過 ExternalInterface 呼叫任何 Javascript Function 得到以下錯誤訊息 SecurityError: Error #2060: 執行程序安全性違規:ExternalInterface 呼叫者 http://a.com/flash.swf 無法存取 [object]。 at flash.external::ExternalInterface$/_initJS() at flash.external::ExternalInterface$/call() at [...]
不管是用哪一種語言,只要關於浮點數運算一定會出現偏差 譬如 AS3 or Javascript 執行 152.2938 * 100 會輸出 15229.380000000001 當然最精確的作法是改用大數 BigDecimal 類別 假如一般不需要用到那麼精確,又要避開浮點數運算偏差的問題 最常見的作法可能就是直接用浮點數乘 100,四捨五入之後再除以 100 了 網路上很多現成的 function 可以用 function roundFloat(value:Number, divider:Number):Number{ return Math.round(value * divider) / divider; } 問題來了,那個除數大小到底該怎樣決定呢? 你可能會覺得很簡單,需要精確到小數下兩位就用 100,精確到三位就用 1000 可是這樣的用法正確嗎? 雙精度浮點數有效位數是 15-16 位 整數位數多,小數有效位數就減少,反之亦然 倘若整數占了 13 位,算式精確到小數 3 位只是自己騙自己而已 倘若整數占了 3 位,算式精確到小數 3 位則是浪費浮點數的有效位數 很明顯固定抓小數 3 位的作法無法適用絕大部分情況 假如需要計算整數位數少,小數位數多情況 [...]
最近 jQuery 更新到 1.6 版,雖然我沒有在用 可是還是測試看看新功能 結果發現新的 data 功能有 bug jQuery 1.6 data() bug demo code: <!DOCTYPE HTML> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>jQuery 1.6 data() Bug</title> <script type="text/javascript" src="jquery-1.6.js"></script> <script type="text/javascript"> $(function () { $("span").each(function(){ console.log(JSON.stringify($(this).data())); }); }); </script> </head> <body> <span data-x="data" /> <span data-x-x="data" /> <span data-x-x-x="data" /> <span data-x-xx-x="data" /> [...]