• 2

[分享]Flash待受製作方法解密~~

購入P905i也有一段時間了

看板上的討論也滿熱烈的

只是在台灣好像還是很少人有自己在製作桌面圖片與FLASH桌面..

那就讓我來野人獻曝,拋磚引玉一下吧

希望有比我更厲害的人能造福人群XDD



以下以P905i為例



FLASH桌面的基底是由Flash Lite 3.0 + Action Script 2.0 構成的

解析度是480*854 (其他解析度的手機可以自己作更變)

製作時,P905i的螢幕大約與28%的縮放率一樣大 (1280*1024模式下)

這樣子做可以省去要一直傳進手機實測的麻煩

但是在電腦螢幕上顯示得實在是有夠不清楚,到了手機上卻不盡然(好歹也是VIERA嘛~)

所以實測還是最為重要的步驟啦



再來就是重頭戲----Flash時鐘的寫法


我參考了日本Flash待受的寫法與我自己的想法

將寫法分為兩類

分別為程式法和MovieClip法

程式法較為方便檔案也比較小,但只限於英日文字,字型也有限制

而MovieClip法做法較為繁雜,但相較於程式法,他字體的表現自由度非常的高,甚至可以使用手繪的字體或是中文,阿拉伯文之類的...(只要你的電腦打的出來就行)

廢話不多說 馬上就來看看怎麼寫吧


首先是程式法的作法

第一步 打開你的Flash = =



然後點一下第一格影格

在動作分欄填入以下程式碼

function onEnterFrame() {
nowDate = new Date();
Hours = nowDate.getHours();
Minutes = nowDate.getMinutes();
Year = nowDate.getFullYear();
Month = nowDate.getMonth();
Day = nowDate.getDate();
Weekday = nowDate.getDay();

MonthArray = new Array("Jan.", "Feb.", "Mar.", "Apr.", "May.", "Jun.", "Jul.", "Aug.", "Sep.", "Oct.", "Nov.", "Dec.");
dMonth = MonthArray[Month];
WeekArray = new Array("Sun.", "Mon.", "Tue.", "Wed.", "Thu.", "Fri", "Sat.");
WeekdayS = WeekArray[Weekday];

_root.clock_mc.d = dMonth+Day+"."+Year;
_root.clock_mc.h = (Hours<10) ? "0"+Hours : Hours;
_root.clock_mc.m = (Minutes<10) ? "0"+Minutes : Minutes;
_root.clock_mc.w = (Weekday=0, 1, 2, 3, 4, 5, 6) ? WeekdayS : "無法取得";
}



一開始是用onEnterFrame作為基底,這樣才能更新時間

(日本的寫法沒有用這個,但還是能隨時更新,原因我也不知道XDD)

然後就是宣告變數與建立時間物件,並呼叫物件以取得時間

再來就是將Flash傳回的值轉換成我們看的懂得月份與星期啦

我的作法是先建立陣列,再以傳回的值選擇字串輸出

但是日本人的寫法是利用條件判斷式

if (Month == 0)
{
MonthStr = "Jan.";
}
else if (Month == 1)
{
MonthStr = "Feb.";
}
else if...etc.

雖然我個人覺得滿笨的,但也不失為一個方法

星期的寫法亦如同月份

要注意的是,月份與星期傳回的值都是由零開始

以下為對照表


涵式傳回值說明
getDate1~31之間的整數取得日期
getDay0~6之間的整數0為週日1為週一,以此類推
getFullYear四位數之整數取得年份(西元)
getMonth0~11之間的整數0表一月,1表二月,以此類推
getHours0~23之間的整數取得時數
getMillseconds0~999之間的整數取得毫秒數
getMinutes0~59之間的整數取得分數
getSeconds0~59之間的整數取得秒數


(原來01還可以寫table在文章裡,還真高級@@)


最後的步驟就是將運算後得到的值輸出

我的作法是建立一個有四個動態文字變數的MovieClip(clock_mc)

四個的名子分別為d h m v,都是取字首,意思就不贅述了

需要注意小時與分中的寫法

因為他們都有小於10時字串長度不一的問題,所以要再寫個條件判斷

將小於10的值前面加一個0的十位數字

而日本人的寫法是

if (h < 10)
{
h = String(h);
h = "0" + h;
}

個人覺得這樣有點冗長,故簡化之

完成之後點發佈就完成了

(秒與豪秒的寫法同上述方法)


MovieClip結構↓


發佈設定↓


成品↓



-------------------------------------------------我是分隔線---------------------------------------------




再來要講解的就是MC(MovieClip)法

由於動態文字欄使用的字碼是機體內建的字碼,所以當你如果使用日文或英文以外的字體或不支援的字型

甚至是自己手繪的圖片,那便會無法完全顯示或根本不能顯示

這時就是MC大展身手的時候啦

因為MC可以使用影格表示數值(會轉為點陣或向量,不像程式是轉出字碼),所以只要是你電腦可以顯示出的資料都可以使用


以下範例以中文字與民國年份寫成:


一開始先在畫面上建立六個MC,分別為

年(1~110年+兩格訊息 共112格)

月(1~12格 共12格)

日(1~31格 共31格)

時(1~24格 共24格)

分(1~60格 共60格)

年的第一格為1年,第二格為2年,以此類推...






程式的寫法跟程式法一樣,要先呼叫函式取得時間

程式碼如下

function onEnterFrame() {
nowDate = new Date();
Hours = nowDate.getHours();
Minutes = nowDate.getMinutes();
Year = nowDate.getFullYear();
Month = nowDate.getMonth();
Day = nowDate.getDate();
Weekday = nowDate.getDay();

dYear = Year-1911;
if (dYear<1) {
_root.y_mc.gotoAndStop(111);
} else if (dYear>110) {
_root.y_mc.gotoAndStop(112);
} else {
_root.y_mc.gotoAndStop(dYear);
}
_root.m_mc.gotoAndStop(Month+1);
_root.d_mc.gotoAndStop(Day);
_root.h_mc.gotoAndStop(Hours+1);
_root.ms_mc.gotoAndStop(Minutes+1);
_root.w_mc.gotoAndStop(Weekday+1);
}


第一段上文說明過了,是取得時間的程式碼

第二段是先將西元轉成民國

然後的條件判斷則是將民國成立之前或110年之後的值導向111格或112格

111格的內容是"革命尚未成功,同志仍須努力"(XDD)

112則是"超出範圍"(應該沒有神人可以把P905i用到110年之後吧!?)

最後的第三段就是將轉出的值一一指定給目標的MC

別忘了前面提醒過的

傳回的值不一定是由1開始,且MC的格數編號是從1開始累加

所以除了Day以外的值都要+1才會正確顯示








再來一樣發佈就完成囉


成品↓









以上皆為個人的研究成果,如果有錯誤歡迎指正

(小弟只是一屆高中生,別太苛求啦~~XDD)

還有因為我不是學美術的..

所以作品很醜,就請多多包含啦~


順便將範例分享給各版友~

附加壓縮檔: 200804/mobile01-82d8007c413eef20066b33ffcf9135eb.zip
2008-04-20 22:42 發佈
文章關鍵字 製作方法 FLASH
超棒的...改天來畫畫看....不知道可不可以分享原始檔呢?...
someone wrote:
超棒的...改天來畫...(恕刪)


Hi~低調的MFC車友您好~~

還是不打算告訴我您是哪位啊?

呵呵~~
讚喔,高手,圖文並茂的flash帶機桌布製作教學,相當有心~~

支持一下~
Show me the MONEY!!!!
steven4300205 wrote:
可以啊希望對你有幫助...(恕刪)


感謝你摟...這樣直接套圖就方便多了...呵呵..謝摟
哇!!小弟你才高中就這麼厲害!!
推一個~~!!
不錯哦. 贊一個.

以前大1教MULTIMEDIA的老師是個美女,所以FIREWORKS和DREAMWEAVER學得很好.
大2的老師是個中年眼鏡胖子, 所以FLASH學得心不在焉...

現在可以抓回來了..多謝啊.. 正想自己做些需要的圖片來設計呢...
脩行是點滴啲功伕
今天晃網站
看到這邊有可以下載的

很多都還不賴
而且 全都免費的

http://ww.flastuff.com

good job~這不推就不對了~
                          
  • 2
內文搜尋
X
評分
評分
複製連結
Mobile01提醒您
您目前瀏覽的是行動版網頁
是否切換到電腦版網頁呢?