iT邦幫忙

DAY 27
1

Flash掰掰!? 不想放棄的囧MD系列 第 27

簡單玩一下AS3.0(七) - Flash(27)

  • 分享至 

  • xImage
  •  

繼 迴圈 可以同時對相同邏輯命名執行 as 的教學之後,

今天要再來說說另外幾個我比較常用的as功能,

有的可以在語法上讓運算更為簡便,而有的我自己覺得可以更一目了然所寫的東西~

另外~話說之前在上傳奇人物 保哥 的 js 課程的時候,

在課堂上有實戰一小段 js 的語法,其實也發現到許多地方跟as寫法相去無幾,

所以說...這對之後寫 jq 有幫助嗎...阿災~XDDD

先說說變數的設定吧

這雖然很基本,但我也是到 3.0 後才開始會用的,

以前2.0只會四招 stop(); play(); gotoAndStop(); gotoAndPlay();

直到 3.0 開始我才有習慣先設定 變數 var 的寫法,

至於怎麼用,我以昨天的 迴圈 範例來說好了~

/* 人物屬性*/
for( var i=1; i<=4; i++){
	this["p0"+i+"_btn"].addEventListener(MouseEvent.CLICK, this["attribute_0"+i] );
	}
function attribute_01(e) {
	for( var i=1; i<=3; i++){
		this["p0"+i+"_mc"].scaleX = this["p0"+i+"_mc"].scaleX*1.1;
		this["p0"+i+"_mc"].scaleY = this["p0"+i+"_mc"].scaleY*1.1;
	}
}
function attribute_02(e) {
	for( var i=1; i<=3; i++){
		this["p0"+i+"_mc"].scaleX = this["p0"+i+"_mc"].scaleX/1.1;
		this["p0"+i+"_mc"].scaleY = this["p0"+i+"_mc"].scaleY/1.1;
	}
}
function attribute_03(e) {
	for( var i=1; i<=3; i++){
		this["p0"+i+"_mc"].alpha = this["p0"+i+"_mc"].alpha + 0.1;
	}
}
function attribute_04(e) {
	for( var i=1; i<=3; i++){
		this["p0"+i+"_mc"].alpha = this["p0"+i+"_mc"].alpha - 0.1;
	}
}

有發現到,有很多地方都是 i<=3; 是因為我目前的 btn 只有3個的緣故,

但若之後我要多加一個 btn ,就得要一個一個地把 i<=3; 改成 i<=4;

不但容易出包而且又厭世~~實在很不好!!

所以我們可以在最上層先 指定(宣告)一個變數,讓它來代表 3 這個數字,

var btnNb:Number = 3;

這表示我用一個變數名稱 btnNb 來代表 3,i<=3; 就可以改成 i<=btnNb;

原始碼就可以整個改成

/* 人物屬性*/

var btnNb:Number = 3;

for( var i=1; i<=4; i++){
	this["p0"+i+"_btn"].addEventListener(MouseEvent.CLICK, this["attribute_0"+i] );
	}
function attribute_01(e) {
	for( var i=1; i<=btnNb; i++){
		this["p0"+i+"_mc"].scaleX = this["p0"+i+"_mc"].scaleX*1.1;
		this["p0"+i+"_mc"].scaleY = this["p0"+i+"_mc"].scaleY*1.1;
	}
}
function attribute_02(e) {
	for( var i=1; i<=btnNb; i++){
		this["p0"+i+"_mc"].scaleX = this["p0"+i+"_mc"].scaleX/1.1;
		this["p0"+i+"_mc"].scaleY = this["p0"+i+"_mc"].scaleY/1.1;
	}
}
function attribute_03(e) {
	for( var i=1; i<=btnNb; i++){
		this["p0"+i+"_mc"].alpha = this["p0"+i+"_mc"].alpha + 0.1;
	}
}
function attribute_04(e) {
	for( var i=1; i<=btnNb; i++){
		this["p0"+i+"_mc"].alpha = this["p0"+i+"_mc"].alpha - 0.1;
	}
}

這樣就可以讓 迴圈 同時指定相同數字,以後即使增加按鈕只要更改變 btnNb 就可以了~!!

今日特調 - 陣列

這個功能應該是當初我寫 as 的時候花很多時間才比較能掌握的語法,(沒辦法腦袋鈍鈍)

但後來摸了一段時間熟悉一點後,偷懶會常常拿它來取代 var 變數~~雖然有時候還是會出包...

他的基本用法大概是這樣

var btnNb2(自己取名):Array = new Array();
btnNb2 = [3,4];

其實還可以再縮短,但這樣講解會比較方便一點,

上述意思就是,我有個 陣列(Array) 名字叫做 btnNb2

btnNb2 裡面有兩個數值分別是 3 跟 4,

btnNb2[0] 這個寫法的話,會得到 3 這個數值,用 btnNb2[1] 就會得到 4 ,

是因為 btnNb2 的 陣列 中 [ ] 裡的數值是你要呼叫 陣列 的第幾順位的值,

而 陣列 中,第一個值是 0 唷,不是 1 ,所以 3 是 btnNb2[0] ~~

解說完之後,我們拿上方的範例來修改一下~就會變成

/* 人物屬性*/

//var btnNb:Number = 3;
var btnNb2:Array = new Array();
btnNb2 = [3,4];

for( var i=1; i<=btnNb2[1]; i++){
	this["p0"+i+"_btn"].addEventListener(MouseEvent.CLICK, this["attribute_0"+i] );
	}
function attribute_01(e) {
	for( var i=1; i<=btnNb2[0]; i++){
		this["p0"+i+"_mc"].scaleX = this["p0"+i+"_mc"].scaleX*1.1;
		this["p0"+i+"_mc"].scaleY = this["p0"+i+"_mc"].scaleY*1.1;
	}
}
function attribute_02(e) {
	for( var i=1; i<=btnNb2[0]; i++){
		this["p0"+i+"_mc"].scaleX = this["p0"+i+"_mc"].scaleX/1.1;
		this["p0"+i+"_mc"].scaleY = this["p0"+i+"_mc"].scaleY/1.1;
	}
}
function attribute_03(e) {
	for( var i=1; i<=btnNb2[0]; i++){
		this["p0"+i+"_mc"].alpha = this["p0"+i+"_mc"].alpha + 0.1;
	}
}
function attribute_04(e) {
	for( var i=1; i<=btnNb2[0]; i++){
		this["p0"+i+"_mc"].alpha = this["p0"+i+"_mc"].alpha - 0.1;
	}
}

很方便吧,這樣只要把我們所要用的數值先用 陣列 裝好之後,

再讓需要的地方一一套用,這樣~~以後我們要修改數值都會相當的方便~ :D


上一篇
簡單玩一下AS3.0(六) - Flash(26)
下一篇
簡單玩一下AS3.0(八) - Flash(28)
系列文
Flash掰掰!? 不想放棄的囧MD30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言