作者meano (明月盈盈)
看板Flash
標題[問題] AS3的按鈕滑入滑出變化
時間Wed Dec 16 18:02:29 2009
最近才努力看懂AS3,如果看書的範例,是懂得它在寫什麼,
但應用起來卻完全茫然一片…
我在做按鈕的滑出滑入時遇到了盲點,感覺很簡單,卻一直找不到出口
(嗚嗚嗚…為啥咪呀…)
請問…
我想做一進入首頁,首頁的按鈕是處於"on"狀態的,
不論滑入滑出哪一個按鈕,首頁的按鈕都不會有變化,
所以我在$rollOut函式裡下了判斷,
接觸鈕($over)等於4時(即"home"鈕)它的影格會在"on"標籤,
其它都是在"out"標籤裡,
可是當滑鼠滑出"home"鈕時,它還是會執行"out"標籤……
將$over不等於4時,它的影格會在"out"標籤,其它都是在"out"標籤時,
被滑鼠過的"home"鈕依然快樂無比的跳進"out"標籤裡…orz
原始碼如下:
var $num:uint = 4;
//宣告正整數變數$num=4,此為連結按鈕的數量
var $link:Array = ["one.html", "two.html", "three.html", "index.html"];
/*宣告$link為一陣列,在陣列中將網頁檔案的連結路徑儲存進去*/
var $over:uint = 4;
/*宣告$over初值為4,希望一進來的「home」是"on"狀態中,使瀏覽者知道其目前
的頁面*/
this["bt0" + $over].gotoAndPlay("on");
//定義$rollOver函式,為判斷滑鼠正滑到哪一顆按鈕上
function $rollOver($evt:MouseEvent){
/*讓$over等於目前所取按鈕的第四個數字,例:bt02,$over即等於2*/
$over = $evt.target.name.slice(3);
/*讓$over減一的原因,是因為$link由0始,$over卻是由1,為使連結到相
配合之路徑,故讓$over減1*/
$over = $over - 1;
/*當滑入某一按鈕時,執行"on"動畫*/
$evt.target.gotoAndPlay("on");
}
//定義$rollOut函式,為判斷滑鼠滑出按鈕恢復其原狀
function $rollOut($evt:MouseEvent){
if ($over == 4){
/*「home」按鈕會一直停留在"on"裡*/
$evt.target.gotoAndPlay("on");
}else{
$evt.target.gotoAndPlay("out");
}
}
//定義jumpToPage函式,連結到特定網頁的函式
function $jumpToPage($myEvent:MouseEvent):void {
for (var $i=0; $i<=$num; $i++) {
if ($over == $i) {
/*如果i等於$over,即代表找到相對應之路徑*/
var $gotolink = $link[$i];
var $linkRequest:URLRequest = new URLRequest($gotolink); //建立超連結物件實體
//建立一目標網址為myLink的URLRequest類別實體,存入名為
linkRequest的變數中
navigateToURL($linkRequest, "_self");
//指定超連結物件實體,以連往指定網頁
//連結到linkRequest中所存放之超連結頁面去
}
}
}
//按鈕的偵聽。因為有四顆按鈕,所以執行for迴圈四次
for (var $j:uint=1; $j<=$num; $j++) {
//讓按鈕的動畫一開始就停下來,再依此按鈕遇到的情形進行其執行函式
this["bt0" + $j].stop();
this["bt0" + $j].addEventListener(MouseEvent.ROLL_OVER,$rollOver);
this["bt0" + $j].addEventListener(MouseEvent.ROLL_OUT,$rollOut);
this["bt0" + $j].addEventListener(MouseEvent.CLICK,$jumpToPage);
}
======================================================================
為了怕大家傷眼,還自備原始檔:
http://foriris.myweb.hinet.net/q/091216_as3btlink.rar
(請原諒我不會縮址…QQ)
※ 編輯: meano 來自: 114.38.8.91 (12/16 18:07)
→ meano:因為BBS只懂得最基礎的方式,有的地方太傷眼請多包含。m(_)m 12/16 18:08
→ aquarianboy:試試把第22行的 if ($over == 4){ 這行的4改成3試試看 12/16 18:24
→ aquarianboy:不過為什麼變數跟function前面都加了$字號呢,是從php 12/16 18:25
→ aquarianboy:或perl養成的習慣嗎? :) 12/16 18:25
推 pm2001:$over只有0,1,2,3 哪來的4? 12/16 18:40
推 cjcat2266:雖然$號是合法變數名稱,不過ECMAScript標準建議的命名 12/16 18:52
→ cjcat2266:原則是"$號只出現在自動產生的code裡",以方便大家判斷 12/16 18:53
→ cjcat2266:這些code是自動產生,還是程式設計師自己寫的 12/16 18:53
→ cjcat2266:當然,每個人還是有自己的習慣,只是給個參考而已 :) 12/16 18:53
→ meano:對喔!!我忽略$over會一直跑下來,它在$rollout之前就已經-1 12/16 22:07
→ meano:了!! 其實我沒正式學過什麼語法,而且常常把變數和關鍵字 12/16 22:09
→ meano:(保留字)分不清,剛好書上說自己設的參數或函數前加上$好 12/16 22:10
→ meano:分辨,我就這樣使用了。0.0"" 12/16 22:10
→ meano:在設參數或自訂函數的部份,除了英文,大家會加上什麼符號嗎 12/16 22:13
推 cjcat2266:我private var會加底線,其他什麼符號都不加 12/16 22:29
→ meano:瞭解!!我以後加底線!! <---銳利的眼神 12/16 23:04
推 cjcat2266:其實不用特別改習慣...我只是給個參考而已 12/16 23:27
→ meano:不不不,若它不太好還是避免使用。 另外,謝謝大家。m(__)m 12/17 13:08