目前分類:Flash (4)

瀏覽方式: 標題列表 簡短摘要
自製函數分享:抓取一星期間頭尾的天數
用意:某一個案子中為了顯示一週運勢的範圍而寫的。
用法:輸入西元的年,Flash的月,西月的日。回傳一個物件,物件有limi1及limi2兩個子物件,每個子物件各自有著y(年)、m(月)、d(日)的值。如果指定一個變數myLimit等於getWeekLimit(2007,4,31),那應你就可以由以下取得包含2007年五月31日的星期第一天及最後一天。
myLimit.limit1.y
myLimit.limit1.m
myLimit.limit1.d
myLimit.limit2.y
myLimit.limit2.m
myLimit.limit2.d
原碼:本函數有使用到getMonthDays函數
  
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
function getWeekLimit(inY, inM, inD) {
var tempObj = new Object();
tempObj.lim1 = new Object();
tempObj.lim2 = new Object();
var myDate:Date = new Date(inY, inM, inD);
var myY = myDate.getFullYear();
var myM = myDate.getMonth();
var myD = myDate.getDate();
var myW = myDate.getDay();
var limit1 = myD-(myW);
if (limit1<=0) {
if ((myM-1) == -1) {
tempObj.lim1.y = myY-1;
var lastDate = getMonthDays((myY-1), 11);
} else {
tempObj.lim1.y = myY;
var lastDate = getMonthDays(myY, (myM-1));
}
var crossdays = 0-limit1+1;
limit1 = lastDate-crossdays+1;
tempObj.lim1.m = myM-1;
tempObj.lim1.d = limit1;
} else {
tempObj.lim1.y = myY;
tempObj.lim1.m = myM;
tempObj.lim1.d = limit1;
}
var limit2 = myD+(7-myW)-1;
var myFullDays = getMonthDays(myY, myM);
if (limit2>myFullDays) {
limit2 = limit2-myFullDays;
if ((myM+1) == 12) {
tempObj.lim2.y = myY+1;
tempObj.lim2.m = 0;
} else {
tempObj.lim2.y = myY;
tempObj.lim2.m = myM+1;
}
tempObj.lim2.d = limit2;
} else {
tempObj.lim2.y = myY;
tempObj.lim2.m = myM;
tempObj.lim2.d = limit2;
}
return tempObj;
}
  


完整原碼解說請至adswf.com觀看

idben 發表在 痞客邦 留言(1) 人氣()

自製函數分享:抓取當月的天數
用義:這個函數乍看下沒有什麼,可是如果在做一些是日期計算時,要知道有沒有跨年跨月時,要用來做扣除的比對時,這個函數算是挺方便的。不需要去考慮月份大小,不用去考慮是否潤年。
用法:定義一個變數等於getMonthDays(),括號中輸入西元的年及Flash的月。西元的年我想大家都知道是2006這種格式,而Flash的月是什麼呢?只是我們原本習慣的1至12月這種算法改成0至11,也就是月份數減1而已。這樣你定義的變數就會得到一個回傳的數字。



  
1
2
3
4
5
6
7
8
9
10
function getMonthDays(inputYear:Number, inputMonth:Number) {
var days:Array = new Array();
if (inputYear%4 == 0) {
days = [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];
} else {
days = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];
}
var daysit:Number = days[inputMonth];
return (daysit);
}


程式碼解說請至adswf.com觀看

idben 發表在 痞客邦 留言(0) 人氣()

  最近有朋友問我以Flash開發小小的Windows AP的價錢,需求是:能夠輸入日期與記事,並且能夠在設定的時間內跳出動畫製的Alert。很簡單又很明確功能敘述,但其實想像實在無限。如果沒有更精確的需求說明,報太高會接不到案子,報太少實在對不起自己,邊做還會覺得很幹。以這種記事類又有alert功能的小軟體,以功能去分割來報價的話可以分為以下:
  1. alert and counter的設計
  2. 寫入的設計與projector的包裝
  3. 萬年曆的使用(optional)
  4. installer的製作

  但其實以Flash開發小AP的報價,光看功能其實是不夠的。一般來說會以Flash來開發小AP,應該是以設計為導向的需求做考量,才會選擇Flash。Flash原本就是設計師為主的軟體,設計師能夠很快的在Flash中製作UI,製作動態,或是將其它繪圖軟體中設計的UI匯入使用。這些設計的需求,往往是在套程式時,要花最多時間與精力的地方,因此我在報價時,我也得需要考量這部份的時間成本。

  以輸入時間與記事的部份來說,有可能是最單純的輸入欄位置放,但如此一來就得寫很多的判斷;也有可能是置放一些很友善的UI,比如說日期的部份有萬年曆的使用,時間部份有combox等下拉式選單的使用,這樣判斷是不用寫太多,但愈友善的UI在開發的當時就必需花更多時間做各方面的考量。

  再以list頁面來說明,輸入的時間記事總得有list頁面來做管理吧?那麼list頁面的呈現,是以月為主還是以週為主?還是以天為單位呢?也有可能是複合式的使用方式,是可以一層一層切換的?有些設計師還會有切換時的動態設計,list單的設計,有些較講究的設計師還會很細心的設計checkBox的呈現方式及list的狀態。為了達到這些需求,一些客制化的成本考量也是我會去計算的。

所以如果有合作機會,需要我報價,希望各方大德能夠出文本說明,或是請設計師給個手稿講解一下,會讓報價的數字更讓你滿意,也讓我不吃虧呀。

感溫啦~~~

idben 發表在 痞客邦 留言(0) 人氣()

  Flash為了方便開發者的使用,將一些常用的功能套件化,稱為Flash的組件。但是使用這些組件,並不是完全不懂的actionScript的人,就可以馬上上手的,多少還是要知道如何給組件需要的參數值,或是從組件中取得所需要的值。因此我頗不贊同一些發案案主的想法:使用了組件,你案子價錢就要便宜一點。我覺得我賣的是Service,是一個know how,而不是組件,或是單一功能 function   最近我剛賣出了一個自己製作的遊戲組件,購買者是因為組件的價格,遠比一個遊戲的開發價格便宜很多,而且又可以重複使用(因為我不限制使用次數)。但因為這個[因為便宜]的心態,讓我和購買者都吃盡了苦頭。所謂的組件,就是將某一個目的功能,以[大多數人]的需求,將它格式化,讓使用的人方便去達到目的。我的第一個苦頭就是,購買者完全不會actionScript!購買者為大,付錢者為大爺,因此我當面教了他一遍(其實網頁說明已經是step by step了)。教了一遍後,購買請了一個小姐來要大量製作遊戲,然後發現組件的功能不能滿足他,因此再要求我客制化。而且所請來的小姐,as的觀念不足,還要求我幫他們改檔案。  我覺得這樣的客人,其實要了解自己的需求,他們所要的並不是一個功能超完善的組件,而是一個能個使用組件的人。千萬別因為了價格上的需求,而選擇了一個超過自己能力的組件,然後造成時間上的成本。

idben 發表在 痞客邦 留言(0) 人氣()