作者aquarianboy (佳节快乐 :))
看板Flash
标题Re: [问题] onRollover 跟 onRollOut的问题
时间Tue Mar 13 13:28:36 2007
※ 引述《icedesign (徵求工作伙伴(程设))》之铭言:
: 不好意思,我是初学程式的新手,想麻烦大家帮我看一下程式的
: 问题。
: 我做了一个影片片段叫icemask_mc,我希望在滑鼠移入的时候,
: 这个影片片段会渐渐透明,而移出的时候影片会回到原来的alpha
: 值25,所以我写了以下的程式:
: var x:Number;
: x = 25;
: if (x = = 25) {
首先,在一开始的时候,这一行会永远执行
基本上,RollOver跟RollOut是两个不同的事件
通常if..else..处理的是两件比较"对等"的事
所以我通常会举例说:
「中午要吃什麽?」 「如果A餐厅有开,就去吃A餐厅,不然就去吃B餐厅」
结果不是A就是B,没有不吃的,或是两家都要吃(当然有的人胃口比较大...^^)
所以,下面的述叙,在第一次执行的时候,只有RollOver的部份会成立
RollOut事件不会出现
RollOver跟RollOut是两个不同的事件
例如「中午要吃什麽?」跟「吃饱後要干嘛?」
if(A餐厅){
吃A餐厅;
}else{
吃饱要去喝咖啡;
}
像上面的例子,如果A餐厅有开,会知道吃A餐厅,但不知道吃饱後要干嘛
如果A餐厅没开,会知道吃饱後要喝咖啡,但不知道中午要吃什麽..
要嘛是两段合成一起写,不然就是应该是分开写会比较合逻辑
合在一起写的话:
if(A餐厅){
吃A餐厅;
吃饱要去书店看书;
}else{
吃B餐厅;
吃饱要去喝咖啡;
}
: icemask_mc.onRollOver = function() {
: function al() {
: icemask_mc._alpha = icemask_mc._alpha-10;
: }
: x = setInterval(al, 100);
: };
因为上面这段第一次永远会执行
所以x的值被setInterval给改变了
第二次就不一定会永远执行了
另外,其实如果你看了一下setInterval的F1说明:
Returns
Number - An integer that identifies the interval (the interval ID), which
you can pass to clearInterval() to cancel the interval.
这个回传值,通常是准备给clearInterval给清除interval用的参数
比较少会拿来做其它运用
: } else {
: icemask_mc.onRollOut = function() {
: function al() {
: icemask_mc._alpha = icemask_mc._alpha+10;
: }
: x = setInterval(al, 100);
: };
: }
: 然後,程式却没办法将两种执行出来。如果将over跟out拆开,是可以
: 跑,不过在增加alpha的时候会超过原先想要的25,会加到100。
: 不晓得这样写对不对,因为我刚学写程式,想麻烦版上高手可以教教
: 我,麻烦各位了,感激不尽呀! m(_ _)m
--
http://www.eddie.com.tw/blog/
http://www.eddie.com.tw/
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 220.135.172.127
※ 编辑: aquarianboy 来自: 220.135.172.127 (03/13 13:32)
1F:推 icedesign:^^谢谢你的解说,我会再试看看~ 03/13 16:39