08.31
[此篇僅供ActionScript 3.0 與 Flex 參考]
繼上篇[ActionScript3.0 中 TextField 吃掉手指游標的問題 (1/3)] 的內容,這次我們要將滑鼠被 TextField 吃掉的問題給解決掉,先來看看整個Run起來的感覺:
你可以看到第一次原始狀態,當滑鼠移到 TextFiled (動態文字) 上時會變成文字輸入遊標,而且當被動態文字被滑鼠點擊時也會顯示被點擊的目標是 TextField,但是有時候我們未必希望拿來做裝飾或顯示資訊用的 TextField 跑出來干擾主體的運作,那又該如何阻斷滑鼠在 TextField 上的事件呢?
其實這個並不難,你只需要用到影片角色主體上的 mouseChildren 屬性即可,mouseChildren 屬性是一個以 Boolean 為設定值的屬性,若是設成 true 則代表要阻斷這個影片角色所包含的子角色事件,反之則不用,預設值是 false。
我將這個範例的程式碼展示在下面,就讓大家去參考:
book_mc.addEventListener(MouseEvent.CLICK,clickHandler);
book_mc.buttonMode=true;
function clickHandler(event:MouseEvent):void{
statusInput.text=event.target+"has clicked...";
}
stopMouseButton.addEventListener(MouseEvent.CLICK,stopMouseHandler);
function stopMouseHandler(event:MouseEvent):void{
book_mc.mouseChildren=false;
}
clearButton.addEventListener(MouseEvent.CLICK,clearHandler);
function clearHandler(event:MouseEvent):void{
statusInput.text="";
}
最近實在是太忙了,而且可以寫的東西又太多了,所以主題會跳著跑,從10月開始,我們將會混著寫Flex, ActionScript, AIR, Silverlight, C#.NET等主題,若是對於 Flash CS3 與 ActionScript 3.0 主題有興趣的朋友,可以參考我寫的這本書 [Flash CS3 Professional ActionScript 3.0 打造互動設計力與美] 在各大書店及網路書店均有販售。
相關文章:
文章內容由宋志峰[ANISTAR]撰寫,引用分享請以鏈結形式註明出處與原始作者。


Dear 洋蔥魚:
謝謝你對這本書的支持,我看你的程式沒有什麼問題,或許是你圖形或是在設計介面上的問題,如果方便將原始碼寄給我(縮減成有問題那段就好),應該會比較容易發現你在哪裡出問題了。
可以寄到 anistar.tw@yahoo.com.tw ,寄出後留言告知ㄧ下,才不會因為漏信而miss掉。
老師您好:
1. 我是先製作了一個「泡泡」影片片段,並且拖曳到「場景1」內,命名實體名稱為「myBubble」
2. 再製作一個內含「一般、滑入、按下效果的按鈕」,並且拖曳到「場景1」內,命名實體名稱為「link_btn」
3. 再在時間軸上的第1格,設定動作如下:
stage.addEventListener(Event.ENTER_FRAME,ch);
function ch(event:Event):void{
myBubble.x=stage.mouseX;
myBubble.y=stage.mouseY;
}
link_btn.addEventListener(MouseEvent.CLICK,gohinet);
function gohinet(event:MouseEvent):void{
navigateToURL(new URLRequest("http://www.hinet.net"),"_self");
}
影片片段可以成功地跟隨滑鼠;但是滑鼠一移到按鈕上,滑鼠游標就會閃個不停,而且無法按下按鈕超連結到中華電信的網址去
但是,只要一刪除(影片片段跟隨滑鼠這段Action),就又可以超連結了。
stage.addEventListener(Event.ENTER_FRAME,ch);
function ch(event:Event):void{
myBubble.x=stage.mouseX;
myBubble.y=stage.mouseY;
}
感謝老師回答(您的書寫的真好)
剛剛才發現這邊還有兩個問題還沒有回啊。 XD
Dear R292:
你要不要在詳細的解說一下你的問題,不是很懂"使用外部導入的html格式"的意思?要不要寫個比較單純但是又不正常的狀況,然後在這邊討論或寄給我 anistar.tw@yahoo.com.tw。
Dear 洋蔥魚:
Event.ENTER_FRAME是不會影響到按鈕點選或是超連結這些動作跟行為的,你是不是因為拖曳時擋住了滑鼠游標所以無法點選到下方的按鈕呢?你必須要給我多點資訊我才有辦法確認是什麼問題。
如果真的是被你的myBubble給擋住的話,那你要用mouseEnabled這個屬性,也就是寫myBubble.mouseEnabled=false,資訊不足只好先猜你是什麼狀況,如果不是再跟我你遇到的問題是什麼。
老師您好:
可否麻煩幫我解答滑鼠拖曳影片片段後,無法按「按鈕」的問題。急~用~
我也嘗試用mouseChildren=false; 來試 實在是腦拙~
請問各位高手,為什麼我在Flash CS3(Action Script 3.0)的環境內,製作一個名為「myBubble」的影片片段
在時間軸上設定動作如下:
stage.addEventListener(Event.ENTER_FRAME,ch);
function ch(event:Event):void{
myBubble.x=stage.mouseX;
myBubble.y=stage.mouseY;
}
影片片段可以成功地被滑鼠拖曳;但是場景中的所有按鈕(有設定超連結的),全都無法作用了
老師您好,佔用一下版面問個小問題。
也是和TextFiled有關,
我是在TextFiled中使用外部導入的html格式,
但出現了個大問題,
就是沒辦法正確得知TextFiled能完全顯示出文字時的height,
我一開始先是使用autoSize配合wordWrap讓文字框只會往下長,
但即使是相同的文字,它自動得出的height每次都不一樣,
後來只好改用numLines乘上大約的行高來解決,
不過這樣背景和文字就沒辦法完全配合。
比較細部的情況可以看我試做的照片集
http://tinyurl.com/2n8buk
點選照片後,下方的文字沒辦法和邊緣配合,真的是很苦惱…
還有望老師解答,謝謝。
對了~忘了幫老師宣傳一下新書,
這本書寫的很棒喔,很適合像我這樣的入門者學習,
有興趣學as3的人都應該去買個一本^_^
Dear Edward:
抱歉,我忘記了 :p
請多包含….
老師我有買啦
之前也有在這邊留言
提醒你書裡漏圖的事情
記得嗎
不過目前我只看到第七章
mask的地方剛翻了一下
已經跑到最後幾頁了
還來不及看到那邊
Dear Edward:
可見你沒買我的書喔 XD
書上有教怎麼用設定遮罩,我是用動態鏡面倒影的特效去示範這個應用.
使用 mask這個property就可以了.
老師賣書蠻賣力的
呵呵
可以再借版面問一下問題嗎
前幾天工作時
要將一個MC設為另一個MC的MASK
但是AS3好像沒有setMask()這個方法了
當時求快所以改發佈成2.0當場搞定
請問老師他跑哪裡了咧……
用3.0總是有點挫折..不習慣…..