看板上的討論也滿熱烈的
只是在台灣好像還是很少人有自己在製作桌面圖片與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.
雖然我個人覺得滿笨的,但也不失為一個方法
星期的寫法亦如同月份
要注意的是,月份與星期傳回的值都是由零開始
以下為對照表
| 涵式 | 傳回值 | 說明 |
| getDate | 1~31之間的整數 | 取得日期 |
| getDay | 0~6之間的整數 | 0為週日1為週一,以此類推 |
| getFullYear | 四位數之整數 | 取得年份(西元) |
| getMonth | 0~11之間的整數 | 0表一月,1表二月,以此類推 |
| getHours | 0~23之間的整數 | 取得時數 |
| getMillseconds | 0~999之間的整數 | 取得毫秒數 |
| getMinutes | 0~59之間的整數 | 取得分數 |
| getSeconds | 0~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

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

























































































