Re: [問題] onRollover 跟 onRollOut的問題

看板Flash作者 (佳節快樂 :))時間18年前 (2007/03/13 13:28), 編輯推噓1(100)
留言1則, 1人參與, 最新討論串2/2 (看更多)
※ 引述《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
文章代碼(AID): #15zZQ7mD (Flash)
文章代碼(AID): #15zZQ7mD (Flash)