08.15
[此文章僅供Flex與ActionScript3.0參考]
這個問題源自於企業包班的一位同學所問的問題,因為我已經很久沒在 Flash 中讓可以按的地方都出現手指頭,所以一直沒有去注意它,當同學問起來的時候我才發現真的有這個問題,尷尬的是當場我就自信滿滿的就秀了一招讓事件在 capture 階段就吃掉事件的方法,結果當然就當場失敗,所以當時當映他一定要幫他找出答案。
他的問題是,當在影片片段 MovieClip 中使用 buttonMode 時,若是裡面包著動態文字 TextField 那麼滑鼠游標會失效,其組成圖如下圖:

我們來寫一段驗證的 code 來試試看,基本上我只不過是命令包著圖像跟動態文字的影片片段註冊點擊的動作,若是被點擊到的人就會告知我們誰被點擊到了,並加上 buttonMode = true 的程式碼,啟動手指游標圖像,驗證程式碼如下:
book_mc.addEventListener(MouseEvent.CLICK,clickHandler);
book_mc.buttonMode=true;
function clickHandler(event:MouseEvent):void{
statusInput.text=event.target+"has clicked...";
}
執行結果如下兩張圖所示,當滑到影像上方時,游標會自己變成手指形狀,點擊時也會告知是影片片段 MovieClip 被點擊到了,這樣是正常的。

可是當滑鼠游標移到動態文字上時,滑鼠游標會變成文字輸入游標,真是尷尬,不過還是可以進行點擊的動作,但是點擊的時候所顯示的並非影片片段 MovieClip 被點擊到了,而是動態文字 TextField 被點擊到了,很明顯事件是被動態文字 TextField 所吃掉了。

當下我認為一定是那個可選取的屬性在作怪,所以趕快去屬性面板將[可選取的]按鈕給反選掉想說這時應該萬無一失了吧。

結果執行起來果然輸入游標不見了,但是卻跑出另一個箭頭滑鼠游標,別鬧了,真是一波未平一波又起,好,來點擊看看,依然是動態文字 TextField 將事件給吃掉了,我用盡了各種方法來封鎖事件,不過依然無功而返。

不知道你有沒有遇到這個問題,今天時間有限,先將由來跟發生狀態記錄在這裡,過幾天再來繼續寫完解決的方法,待續…
相關文章:
文章內容由宋志峰[ANISTAR]撰寫,引用分享請以鏈結形式註明出處與原始作者。


[...] 繼上篇[ActionScript3.0 中 TextField 吃掉手指游標的問題 (1/3)] 的內容,這次我們要將滑鼠被 TextField 吃掉的問題給解決掉,先來看看整個Run起來的感覺: [...]
Dear Spencer:
啊,看到你的留言我才發現上次寫到一半的文章,好,這禮拜繼續補齊。 XD
不過2/3已經寫在Blog上了耶,請參考 ActionScript3.0 中 TextField 吃掉手指游標的問題 (2/3) 這篇。
親愛的安尼斯大:
突然發現這一篇文章放在這邊很久了…
結了一堆蜘蛛網…
不知道您何時有空公佈答案呀~
(這個關子賣得好大…XD)
我想一定很多人在等的^^