享受視覺,

享受音樂,

泡杯咖啡,

再來細細品嘗每一篇文章不是很棒的一件事嗎 ?

請移到新部落格喔~ zzz

2013年11月13日 星期三

第 2 章 使用字串



Flash Actionscript 3String 範例 - WELLCOME 輸出 "W.E.L.L.C.O.M.E" (length, charAt, slice, substr, substring)
String 範例 - WELLCOME 輸出 "WeLlCoMe" (toUpperCase, toLowerCase)
String 範例 - 網址變數處理 (split, parseInt, toString)

String 範例 - WELLCOME 輸出 "W.E.L.L.C.O.M.E" (length, charAt, slice, substr, substring)

假設我希望輸出 "W.E.L.L.C.O.M.E" 文字,預設文字為 WELLCOME,我可能會用一個迴圈逐步將"."符號加入 WELLCOME 字串內,請注意最後一個英文字母後面沒有 "." 符號。關於去除最後一個 "." 符號方法有三種分別為 slice, substr, substring,其功能皆為擷取片段字串,本例選用 slice,帶入參數用法可參考官方 String API


package
{
import flash.display.Sprite;
import flash.text.TextField;

public class Main extends Sprite
{

public function Main()
{
var output:TextField = addChild(new TextField) as TextField; 
output.text = "WELLCOME";

var i:int = 0;
var l:int = output.text.length;
var sum:String = "";

for(i = 0; i < l; i++)
{
sum += output.text.charAt(i)+".";
}

sum = sum.slice(0, sum.length - 1);

output.text = sum;
}

}

}





String 範例 - WELLCOME 輸出 "WeLlCoMe" (toUpperCase, toLowerCase)

假設我希望輸出 "WeLlCoMe" 文字,預設文字為 WELLCOME,則我可以在迴圈中使用取2餘數來判定目前索引單基數與否,依序將大小寫字元合併。


package
{
import flash.display.Sprite;
import flash.text.TextField;

public class Main extends Sprite
{

public function Main()
{
var output:TextField = addChild(new TextField) as TextField; 
output.text = "WELLCOME";

var i:int = 0;
var l:int = output.text.length;
var sum:String = "";

for(i = 0; i < l; i++)
sum += i % 2 == 0 ? output.text.charAt(i).toUpperCase() : output.text.charAt(i).toLowerCase();

output.text = sum;
}

}

}





String 範例 - 網址變數處理 (split, parseInt, toString)

假設有一段學校個人成績網址 http://www.school.com/index.php?score1=94&score2=96&score3=98 挾帶三個參數與值,我該如何算出三科平均。其實很簡單,善用 split 拆解產生陣列即可;先設定 url 為網址變數名稱,則 url.split("?")[1]為 score1=94&score2=96&score3=98, url.split("?")[1].split("&")[0] 為 score1=94,依序拆解即可。最後三科相加平均數數值型態必須轉字串形態如下。


package
{
import flash.display.Sprite;
import flash.text.TextField;

public class Main extends Sprite
{

public function Main()
{
var output:TextField = addChild(new TextField) as TextField;
 
var url:String = "http://www.school.com/index.php?score1=94&score2=96&score3=98";
var variables:Array = url.split("?")[1].split("&");
var score1:int = parseInt(variables[0].split("=")[1]);
var score2:int = parseInt(variables[1].split("=")[1]);
var score3:int = parseInt(variables[2].split("=")[1]);

output.text = ((score1 + score2 + score3)/3).toString();
}

}

}

2013年11月12日 星期二

第 1 章 使用日期與時間



Flash Actionscript 3Date 範例 - 格式化新聞發佈日期製作(Date, getFullYear, getMonth, getDate)
Timer 範例 - 設計閃動五秒的文字(setInterval, setTimeout, clearInterval, clearTimeout)
Timer 範例 - 文字移動動畫(Timer)

Date 範例 - 格式化新聞發佈日期製作(Date, getFullYear, getMonth, getDate)

當製作到類似 Blog 的新聞或留言發佈日期時,假設我們希望日期的顯示格式為 yyyy - mm - dd ,我們必須要用到幾個函式來分別取得年月日的字串,並用 " - " 符號合併字串;同時若日期顯示為 2013 - 09 - 09 ,月日都要記得補零。


package
{
import flash.display.Sprite;
import flash.text.TextField;

public class Main extends Sprite
{

public function Main()
{
var output:TextField = addChild(new TextField) as TextField; 
var publishDate:Date = new Date(2013, 8, 9, 0, 0, 0, 0);
var yyyy:Number = publishDate.getFullYear();
var mm:Number = publishDate.getMonth()+1;
var dd:Number = publishDate.getDate();
output.text = yyyy+"-"+padZero(mm)+"-"+padZero(dd);
}

public function padZero(dayTime:int):String
{
return Math.floor(dayTime/10) == 0 ? "0" + dayTime : dayTime.toString();
}

}

}

記得 new Date(2013, 8, 9, 0, 0, 0, 0); 第二個參數 8 是 9 月。var mm:Number = publishDate.getMonth()+1;顯示時要加一。




Timer 範例 - 設計閃動五秒的文字(setInterval, setTimeout, clearInterval, clearTimeout)

以下為 Timer 運用,setInterval 為固定頻率觸發,setTimeout 為觸發一次;所以文字閃爍功能應做在 setInterval 內,而文字停止閃爍行為應在 setTimeout 內設定。


package
{
import flash.display.Sprite;
import flash.text.TextField;
import flash.utils.clearInterval;
import flash.utils.clearTimeout;
import flash.utils.setInterval;
import flash.utils.setTimeout;

public class Main extends Sprite
{

public function Main()
{
var output:TextField = addChild(new TextField) as TextField; 
output.text = "I am a blinker!";

var id1:uint = setInterval(function(){
if(output.alpha < 0)
output.alpha = 1;
output.alpha -= 0.1
},100);

var id2:uint = setTimeout(function(){
clearInterval(id1);
clearTimeout(id2);
output.alpha = 1;
},5000);

}

}

}





Timer 範例 - 文字移動動畫(Timer)

除函式 Timer 也提供 Timer 類別, Timer 類別須搭配事件處理,記得以成員方法 start()執行 Timer。


package
{
import flash.display.Sprite;
import flash.events.TimerEvent;
import flash.text.TextField;
import flash.utils.Timer;

public class Main extends Sprite
{

public function Main()
{
var output:TextField = addChild(new TextField) as TextField; 
output.text = "I am an animator!";

var timer:Timer = new Timer(100,10);

timer.addEventListener(TimerEvent.TIMER,function(e:TimerEvent){
output.x += 20;
})

timer.addEventListener(TimerEvent.TIMER_COMPLETE, function(e:TimerEvent){
output.y += 20;
})

timer.start();
}

}

}