Re: [問題] onRollover 跟 onRollOut的問題
※ 引述《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)
推
03/13 16:39, , 1F
03/13 16:39, 1F
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 2 篇):
Flash 近期熱門文章
PTT數位生活區 即時熱門文章