2011年5月16日 星期一

Flash時鐘的製作

by Jolson Huang
技巧 (concept):
Action指令
  • 抓取電腦系統Local之時間(Flash 5.0以上之Player方支援此功能)
    • time=new Date()
  • 設定變數 (Set Variable,variable = expression);
    • hour=time.getHours()*30 (30度=360度/12小時)
    • minute=time.getMinutes()*6(6度=360度/60分)
    • second=time.getSeconds()*6(6度=360度/60秒)
    • hour=hour+(time.getMinutes()*0.5)(微調時針每分鐘移位之幅度,0.5度=30度/60分)
  • 設定屬性(SetProperty(target, property, expression))
    • target分別填入時針、分針及秒針三個Instance之名稱(隨您高興命名之)
    • property選 _rotation
    • expression分別填入前面hour、minute及second三個變數之名稱
  • 指令輸入方式
    • 請儘量使用專家模式(Expert Mode)。專家模式較為方便,且Flash 5.0之一般模式(Normal Mode)有一點小Bug,有些情況會有一些亂碼,須切換至專家模式來修改。
    • 從專家模式切換到一般模式,若有文法上之錯誤則無法切換成功,請將不正確之指令行(Statement)刪除後即可。
    • 請參閱指令專章。
繪圖技巧
  • Ink Bottle Tool之操作
    • 修改分針或線條之顏色
  • Sub select Tool之操作
    • 將長方型改變為三角錐形或其他形狀
  • snap to objects之運用
    • 關閉吸鐵功能(snap to object),較容易組合物件
  • Transform功能的運用
    • 繪製菱形圖案
    • 複製並自動旋轉某個角度
  • Arrow Tool之運用
    • 修改圖案形狀
製作動畫元件(Symbol)
  • 動畫元件Insert>New Symbol→Movie Clip
  • 圖形元件Insert>New Symbol→Graphic

修改元件本元件本尊之中心位置

  • 分身物件(Instance)使用Action之旋轉(_rotation)指令,係以其元件本尊(Symbol)之中心位置來旋轉,並非以分身物件或元件本尊本身之中心點來旋轉。為避免搞混,最好使用Show Info Panel將元件本尊之中心點調到中心位置上。
  • Modify>Transform>Edit Center
    • 分身物件打散,將失去中心點
    • 分身物件可以擁有自己的屬性(包括中心點、顏色等)
按部就班(step by step):
  1. 製作鐘面(至於圓的或方的啦,顯示阿拉伯數字或羅馬數字啦,隨您高興!請儘量發揮您的創意。)的圖形元件(Graphic)與時針、分針與秒針等三個動畫元件(Movie Clip)。使用Modify>Transform>Edit Center 調整中心點於元件之下緣,並再使用Show Info Panel將元件本尊之中心點調到中心位置上。
  2. 回到場景(Scene)使用內定(default)之電影(Movie)設定,建立五個圖層(Layer),由下而上分別命名為base, hour , minute, second, and action,方便日後維護修改,或更換鐘面與指針樣式。並將第一步所製作之元件,從圖庫中拖曳到各圖層第一個影格之場景中。對各場景內的時針、分針與秒針三個動畫分身物件,使用Show Instance Panel分別命名為hour、minute、second。(名稱也隨您高興啦,只要不要互相衝撞collision即可。切記‧‧‧若取不同之命名,記得在下一步(第三步)輸入SetProperty指令時,target之名稱也要跟著更動。)並使用Show Info調整此四個分身物件之中心點於同一位置(例如x=280,y=180)。
  3. 在action圖層的第一影格內輸入以下之指令:
    time=new Date();
    if (time.getMonth()>=3 and time.getMonth()<=9){ //四月到十月為日光節約時間
    hour = (time.getHours()-1)*30;
    }else{
    hour = (time.getHours())*30;
    }
    second = time.getSeconds()*6;
    minute = time.getMinutes()*6;
    hour = hour+(time.getMinutes()*0.5);
    setProperty ("/hour", _rotation, hour);
    setProperty ("/minute", _rotation, minute);
    setProperty ("/second", _rotation, second);
  4. 分別在各圖層的第二影格按F5以延續第一影格內之物件,即大功告成。

沒有留言:

張貼留言