2015年4月7日 星期二

CreateJS系列教學-第二篇 樂透轉轉機

大家好,我是奶綠茶
熟悉了 Adobe Flash CC2014 匯出成 html5 CreateJS 教學後
接著我們再來練習把 JS 的程式碼寫成 Flash CC2014 裡
直接匯出成 html5 格式,製作速度之快,是其他軟體比不上的呀。
請到老師的好友, Titan 老師, 把之前製作過的 Flash 樂透轉轉機
轉成 html5 格式,讓桌機和手機同時支援

用 Flash CC2014 開啟之前製作好的 fla 檔
原本是 AS 文件,要轉存成 html5 文件
選擇上方工具列:命令 / 從 AS3 文件格式轉換為 HTML5 Canvas


存好新檔後,可以看到屬性面試顯示為 HTML5 Canvas 文件
此時在時間軸寫的程式碼是 JS 而不是 AS 喔


在這個範列下,需要再增加二段 JS 程式碼
1. 在影格 1 加入點擊後開始播放
this.stop();
// 方法1,  用 on 的方法偵聽事件
this.on("click",function(){
// 用 on 的方法,此時 this 指向會是自己
console.log("on",this);
this.gotoAndPlay(1);

});


// 方法2,用 addEventListener 方法偵聽事件
this.addEventListener("click",function(){
// 用 addEventLister 方法, this 指向會指到 Window
console.log( "addEventListener",this );

});



二者的差別在 this 的 scope 指向,奶老師個人編好使用 on 的方法來偵聽
因為只要打二個字(整個就是懶)。
提醒一下,在本機開發時 Chrome 會檔掉 click 事件,跳出這樣的訊件
Uncaught An error has occurred. This is most likely due to security restrictions on reading canvas pixel data with local or cross-domain images.
因為我們引用的 js 是來自 code.createjs.com 。
決解辦法就是丟到網路上即可,或是改用 Firefox 即可本機開發。


2. 轉轉機的結果
我們把要顯示的文字元件放在 txt_mc 元件裡,該元件放了三個影格。
只要加上亂數跳到指定的影格即可
var frame = Math.floor( Math.random() * 2 + 0.5);
this.txt_mc.gotoAndStop(frame);
this.play();
HTML5 文件下,影格是從 0 開始喔。



製作動畫的方式就和以往一樣,沒有任何改變,不需要再另外重新學習
有些小地方還是要提醒一下,並不是所有的功能都支援轉換
1. 本來在 AS 格式寫的程式碼,轉換為 HTML5 格式後,會自動被注解
FlashCC2014 只轉換動畫部份,程式還是需要重寫為 JS 格式。
2. 不支援 Filter 和混色模式。


3.顏色效果只支援 Alpha 。


4. 時間軸影格是從 0 開始(AS格式是從 1 開始)
EaselJS 中的影格編號從 0 開始,而非 1。例如,這會影響 gotoAndStop 和 gotoAndPlay 呼叫。

線上Demo
http://www.milkmidi.com/demo/201504_flashcc_createjs_part2/

祝大家學習愉快。
完整的 Source 下載
https://github.com/milkmidi/createjs_tutorial/tree/master/02_capsuleToy

轉載請註明出處

2014年12月26日 星期五

CreateJS系列教學-第一篇 AdobeCC2014 Export

大家好,我是奶綠茶
Adobe今年推出了 CC2014 系列工具,
身為 "阿豆比米" 是一定要來研究一下有什麼新功能。
就從最熟悉的 FlashCC2014 來介紹起
很多學生問我該不該再學 Flash
因為行動裝置上不能執行 Flash , 且 HTML5 的普及,Flash 的黃金時代已過去,
但這不表示 Flash 工具就從此退役喔。
對設計師來說,Flash還是世上最好用的動畫工具,
今天就來介紹如何使用 Adobe FlashCC2014,
將 Flash 裡的時間軸動畫輸出成 HTML5 的格式,這樣就能同時支援桌機與行動裝置平台。

軟體啟動可以看到新的啟動畫面,這也是每次有新版本推出時
筆者最期待的功能之一。


延續 Adobe Flash CC, 使用介面可以調整成暗色系


接著我們新增檔案,選擇 HTML5 Canvas 格式
AdobeCC20014 支援了 WebGL 的輸出,這個等下一篇再來介紹。


在屬性面版可以看到是 HTML5 Canvas 文件


如果想把舊有的 AS fla 轉成 HTML5 Canvas fla文件的話
只要執行上方工具列 / 命令 / 從 AS3 文件格式轉換為 HTML5 Canvas 即可


將舞台大小設定為 640 x 400
寬度 640 是因為當 Mobile Web viewport 設定成 width=device-width 時
大多數的裝置的寬度會得到 320, 因應 Retina 顯示, 所以要 320 乘 2 = 640。
接著我們拉個簡單的動畫, 讓圖示由左到右,再到下,再到左,再回來本來的位置
做一個口字型的移動。
時間軸長這樣


在第一格影格寫上程式碼
要注意喔,因為是 HTML5 Canvas 文件
所以是寫 JavaScript, 而不是 ActioinScript
完整的 CreateJS JavaScript 提示,這對初學者有很大的幫助


分邊在指定的影格下 this.stop();
讓動畫播到此處時暫停,然後點擊後再播放
為了能讓任意處點擊都有效,所以在下方放置一個白色(或透明)的色塊


在第一個影格寫上點擊事件
要注意一下,因為是 JavaScript,所以會有 scope 的問題
如果只寫 stop(); JS 不會知道是要執行誰的 stop();
所以要加上 this
偵聽事件就跟 AS3 寫法一樣。


測試過程中 Chrome 因為本機安全性的關系, 在點擊時會發生
 Uncaught An error has occurred. This is most likely due to security restrictions on reading canvas pixel data with local or cross-domain images.
這個錯誤,決解的方法就是丟到 http 下測試,或是改用 Firefix 即可決解。

接著就可以發佈檔案
fla就是 Flash 的原始碼
images 裡的資料夾, 就是 fla 裡有用到的圖片
可以用筆事本打開 html, js, 發現是很好閱讀的程式碼喔


修正程式碼,讓 createJS 能夠自動滿版
打開 .html , 新增以下程式碼,就完成了。




筆者將完整的 demo 檔放在 github 上
https://github.com/milkmidi/createjs_tutorial

謝謝大家

2014年12月19日 星期五

Android View y,translationY 比較

大家好,我是奶綠茶
Android View 物件有 setY 和 setTranslationY 二個屬性
都是可以更改 y軸座標,兩個屬性原理有些不一樣
setY(10) :以父容器為基準,設置 y 軸座標為 10
View.setY Source 如下
public void setY(float y) {
        setTranslationY(y - mTop);
}

setTranslationY(10):自己為基準,設置 y 軸座標為 10
測試結果如下圖
紅底圖為測試的 ImageView,layout_below 綠底文字
上層有個淡紅色的 RelativeLayout 父容器
呼叫 getY() 時,因為經過 RelativeLayout 排版
以父容器為基準值,得到  109
getTranslationY() 以自己為準基,所以值為 0




轉載請註明出處

2014年11月4日 星期二

android Drawselectorontop

大家好,我是奶綠茶
在使用 ListView 時有個 drawselectonTop 的屬性能夠使用
原文:
Controls whether the selection highlight drawable should be drawn on top of the item or behind it.
意思是說選取時是否要繪制在物件上


左圖是一般樣式,右圖是指定 drawselectonTop ,這樣選取時就會有 highlight的效果

一般的 ViewGroup 並沒有這樣的功能
謙裡有現成的Library可以使用,祝大家學習愉快。
轉載請註明出處
https://gist.github.com/chrisbanes/9091754

2014年4月16日 星期三

Flash Timeline to TweenMaxJS

大家好,我是奶綠茶
因為專案的需求
現在客戶都要製作 html 的網頁
但在製作動態效果上就有些麻煩
都只能用 js 寫出來
使用 createJS 轉出來是 HTML5 Canvas 版本
快樂  IE8 不支援
所以筆者寫了一個 Flash 的小外掛
能將 Flash 裡的時間軸動畫輸出成 html 的程式碼
動態的部份是使用 TweenMax 來製作
這樣就可以用熟悉的工具拉時間軸動畫
且支援舊的 Browser
不是所有的 Flash 裡的效果都有支援轉換
一定要本來 html 做的到的功能才行
感謝老婆大大 Betty 提供的idea(聽老婆的話就對了,羞)
Adobe Flash CS6 Timeline to TweenMaxJS alt tag

將目前的時間軸轉成 TweenMax JS 版程式碼

使用方法:
1. 下載 flashTimelineToTweenMaxJS.zxp 2. 開啟 FlashCS6(FlashCC).
3. 在 PC 上,中文 OS 安裝英文版 Flash 軟體時, 安裝 extensions 會有語系問題
解決方法是從 Flash / Help / Manage Extensions 啟動並安裝
alt tag
4. 製作你的時間軸動畫或點我下載 Demo.fla .
5. 第一個影格不能是空.
alt tag
6. 點擊上方工具列 / 命令 / flashTimelineToTweenMaxJS 
alt tag
7. 在同 fla 資料夾下即可看到匯出的 html 檔.
8. html 需要引用 TweenMax 和 jQuery 的 Library.

createJS 轉出來的是 html5 canvas 動畫, 快樂 IE8 不支援
我的小工具只是將動畫轉成 TweenMax 的程式碼,省去前端攻城屍 Coding 時間
zxp_source 資料夾裡是完整的 Source Code 

完整的 SourceCode 我放在 Github 上
https://github.com/milkmidi/flashtimeline_to_tweenmaxjs

轉載請註明出處

2014年4月15日 星期二

壓縮你的js程式碼

大家好,我是奶綠茶
在專案上線前,我都會把 js 的程式碼壓縮成最小化
一來 k 數小,二來也比較安全一點
我是使用 Google 的線上壓縮JS服務
http://closure-compiler.appspot.com/home
但每次都要線上壓有點麻煩
好在他有提供 api 和 jar 可以使用
寫一個簡單的 bat 檔,把你的本來的 js 檔接過去執行
就會自動幫你另存一個壓過後的 js 版本

:: @echo off
:: 指定你的 jar 路徑
set COMPILER="F:\[Service]\google-closure\compiler.jar"

@echo "%~f1"

SET v_filename=%~nx1
SET v_ext=%~x1
SET v_remainder=%~dp1
java -jar %COMPILER% --js "%~f1" --js_output_file %v_filename%.min.js


pause

如果你是使用 vs 系列的開發人員
可以加裝這一套外掛
http://visualstudiogallery.msdn.microsoft.com/07d54d12-7133-4e15-becb-6f451ea3bea6
將你寫好的 js 檔,同路徑下另存一個 xxxx.min.js
只要按存檔, 就會自動幫你壓縮好
超方便的
大推

轉載請註明出處