[問題] AS3的按鈕滑入滑出變化

看板Flash作者 (明月盈盈)時間14年前 (2009/12/16 18:02), 編輯推噓4(4015)
留言19則, 4人參與, 最新討論串1/1
最近才努力看懂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)

12/16 18:08, , 1F
因為BBS只懂得最基礎的方式,有的地方太傷眼請多包含。m(_)m
12/16 18:08, 1F

12/16 18:24, , 2F
試試把第22行的 if ($over == 4){ 這行的4改成3試試看
12/16 18:24, 2F

12/16 18:25, , 3F
不過為什麼變數跟function前面都加了$字號呢,是從php
12/16 18:25, 3F

12/16 18:25, , 4F
或perl養成的習慣嗎? :)
12/16 18:25, 4F

12/16 18:40, , 5F
$over只有0,1,2,3 哪來的4?
12/16 18:40, 5F

12/16 18:52, , 6F
雖然$號是合法變數名稱,不過ECMAScript標準建議的命名
12/16 18:52, 6F

12/16 18:53, , 7F
原則是"$號只出現在自動產生的code裡",以方便大家判斷
12/16 18:53, 7F

12/16 18:53, , 8F
這些code是自動產生,還是程式設計師自己寫的
12/16 18:53, 8F

12/16 18:53, , 9F

12/16 18:53, , 10F
當然,每個人還是有自己的習慣,只是給個參考而已 :)
12/16 18:53, 10F

12/16 22:07, , 11F
對喔!!我忽略$over會一直跑下來,它在$rollout之前就已經-1
12/16 22:07, 11F

12/16 22:09, , 12F
了!! 其實我沒正式學過什麼語法,而且常常把變數和關鍵字
12/16 22:09, 12F

12/16 22:10, , 13F
(保留字)分不清,剛好書上說自己設的參數或函數前加上$好
12/16 22:10, 13F

12/16 22:10, , 14F
分辨,我就這樣使用了。0.0""
12/16 22:10, 14F

12/16 22:13, , 15F
在設參數或自訂函數的部份,除了英文,大家會加上什麼符號嗎
12/16 22:13, 15F

12/16 22:29, , 16F
我private var會加底線,其他什麼符號都不加
12/16 22:29, 16F

12/16 23:04, , 17F
瞭解!!我以後加底線!! <---銳利的眼神
12/16 23:04, 17F

12/16 23:27, , 18F
其實不用特別改習慣...我只是給個參考而已
12/16 23:27, 18F

12/17 13:08, , 19F
不不不,若它不太好還是避免使用。 另外,謝謝大家。m(__)m
12/17 13:08, 19F
文章代碼(AID): #1BAB0-yd (Flash)