作者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)
1F:→ meano:因为BBS只懂得最基础的方式,有的地方太伤眼请多包含。m(_)m 12/16 18:08
2F:→ aquarianboy:试试把第22行的 if ($over == 4){ 这行的4改成3试试看 12/16 18:24
3F:→ aquarianboy:不过为什麽变数跟function前面都加了$字号呢,是从php 12/16 18:25
4F:→ aquarianboy:或perl养成的习惯吗? :) 12/16 18:25
5F:推 pm2001:$over只有0,1,2,3 哪来的4? 12/16 18:40
6F:推 cjcat2266:虽然$号是合法变数名称,不过ECMAScript标准建议的命名 12/16 18:52
7F:→ cjcat2266:原则是"$号只出现在自动产生的code里",以方便大家判断 12/16 18:53
8F:→ cjcat2266:这些code是自动产生,还是程式设计师自己写的 12/16 18:53
10F:→ cjcat2266:当然,每个人还是有自己的习惯,只是给个参考而已 :) 12/16 18:53
11F:→ meano:对喔!!我忽略$over会一直跑下来,它在$rollout之前就已经-1 12/16 22:07
12F:→ meano:了!! 其实我没正式学过什麽语法,而且常常把变数和关键字 12/16 22:09
13F:→ meano:(保留字)分不清,刚好书上说自己设的参数或函数前加上$好 12/16 22:10
14F:→ meano:分辨,我就这样使用了。0.0"" 12/16 22:10
15F:→ meano:在设参数或自订函数的部份,除了英文,大家会加上什麽符号吗 12/16 22:13
16F:推 cjcat2266:我private var会加底线,其他什麽符号都不加 12/16 22:29
17F:→ meano:了解!!我以後加底线!! <---锐利的眼神 12/16 23:04
18F:推 cjcat2266:其实不用特别改习惯...我只是给个参考而已 12/16 23:27
19F:→ meano:不不不,若它不太好还是避免使用。 另外,谢谢大家。m(__)m 12/17 13:08