Rios 發問時間: 電腦與網際網路程式設計 · 8 年前

關於Flash語法的判斷式

我想用Flash做一個簡易流動式廣告效果(如附件),我在Flash中做了一個影片片段,是由27張照片組成的,每張照片上面都有一個按鈕,共有27個實體名稱(b01_btn~b27_btn),每個按鈕都連結到不同的頁面。

但我執行的結果,case 01~case 09就會出現以下這段錯誤,無法正常連結

TypeError: Error #2007: 參數 url 不能是 Null。

at global/flash.net::navigateToURL()

at FB_fla::Timeline_1/myLink()

而從case 10~case 27開始的連結就都正常了~不知道是哪邊的語法有錯誤呢?

有請各位Flash的語法高手幫忙指點與修正一下,感激不盡~

已更新項目:

以下是我寫的元件(影片片段)語法

for(var i:int=1;i<=27;i++){

this["b"+i+"_btn"].addEventListener(MouseEvent.CLICK,myLink);

}

function myLink(event:MouseEvent){

var myBtn:String=event.target.name.substr(1,2);

var myurl:String;

2 個已更新項目:

(接續上面語法)

switch(myBtn){

case 01:

myurl="http://www.facebook.com/profile.php?id=10000031519...

break;

(中間為case 01~case 26,因字數過多,我就不打出來了)

case 27:

myurl="http://www.facebook.com/tsungming.chen.7%22;

break;}

var req:URLRequest=new URLRequest(myurl);

navigateToURL(req,'_self');}

3 個已更新項目:

[TO:Fun輕鬆]

謝謝您的協助,因為字串我只能抓到一位數,所以才想說改成兩位數來讓它抓。我的按鈕名稱把0去掉了,但還是抓到不到

[TO:阿哲類]

感謝您的意見,不過我試了還是不行,我的按鈕是以b1_btn去命名的,所以數字前面已經有個b了。我的影片片段有27個按鈕,所以才用switch..case來跑,我還真的不是很會寫,所以非常傷腦筋,不然我把case的編號拿掉,直接去抓按鈕試試看囉!

2 個解答

評分
  • 8 年前
    最佳解答

    你抓數字這邊有問題,因為你數字在中間,你for迴圈的數字在個位數的時候名稱會變成是:b1_btn,你這樣抓字元是抓到"1_",他switch不到,建議要用substrf抓數字,數字最好放最後比較不會有問題。

    你現在要嘛把數字改最後,要馬把case第一到第九項改成像是下面:

    case "1_":

    break;

    記得加上雙"號

    2013-01-03 21:56:03 補充:

    後來再看一下才發現...

    你按鈕名稱多個0...01、02、03...

    你for跑完不會監聽不到嗎....

    記得把0去掉。

    2013-01-06 04:51:24 補充:

    你是不是沒改好,我實測是OK。

    你要多用trace(),substr完要測試,switch也要測才知道哪邊沒抓到。

    順便說下case那邊要加"號才抓的到,個位數的後面要有_號,ex: case "1_":

    補上測試檔

    http://webhd.xuite.net/_oops/cf0919383/s9n

    參考資料: 我, 我, 我
  • 8 年前

    第一.你是在Flash寫,按鈕不能是數字命名也就是01_btn不可你必須是a01_btn這樣命名

    第二. 你只是針對每個廣告寫一個範例用switch這方法太繁雜了,如果不是很會寫只要寫最單純的 navigateToURL() 把影片片段當成按鈕寫極可這樣反而比較好寫O_O

還有問題?馬上發問,尋求解答。