2007
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 打造互動設計力與美] 在各大書店及網路書店均有販售。


相關文章:
  • [分享]Flex 4 與 Flash CS5的 API表
  • Facebook 的ActionScript API 更新到 3.3版
  • Flash on iPhone,代誌就這麼發生了
  • 用ActionScript讀取相片中的exif資訊
  • 現場直擊Flash/Flex特效瘋-8/26活動內容預告
  • 本文引用:
    文章內容由宋志峰[ANISTAR]撰寫,引用分享請以鏈結形式註明出處與原始作者。

    14 comments so far

    Add Your Comment
    1. Dear 洋蔥魚:
      謝謝你對這本書的支持,我看你的程式沒有什麼問題,或許是你圖形或是在設計介面上的問題,如果方便將原始碼寄給我(縮減成有問題那段就好),應該會比較容易發現你在哪裡出問題了。
      可以寄到 anistar.tw@yahoo.com.tw ,寄出後留言告知ㄧ下,才不會因為漏信而miss掉。

    2. 老師您好:

      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;
      }

      感謝老師回答(您的書寫的真好)

    3. 剛剛才發現這邊還有兩個問題還沒有回啊。 XD
      Dear R292:
      你要不要在詳細的解說一下你的問題,不是很懂"使用外部導入的html格式"的意思?要不要寫個比較單純但是又不正常的狀況,然後在這邊討論或寄給我 anistar.tw@yahoo.com.tw

      Dear 洋蔥魚:
      Event.ENTER_FRAME是不會影響到按鈕點選或是超連結這些動作跟行為的,你是不是因為拖曳時擋住了滑鼠游標所以無法點選到下方的按鈕呢?你必須要給我多點資訊我才有辦法確認是什麼問題。
      如果真的是被你的myBubble給擋住的話,那你要用mouseEnabled這個屬性,也就是寫myBubble.mouseEnabled=false,資訊不足只好先猜你是什麼狀況,如果不是再跟我你遇到的問題是什麼。

    4. 老師您好:

      可否麻煩幫我解答滑鼠拖曳影片片段後,無法按「按鈕」的問題。急~用~
      我也嘗試用mouseChildren=false; 來試 實在是腦拙~

    5. 請問各位高手,為什麼我在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;
      }

      影片片段可以成功地被滑鼠拖曳;但是場景中的所有按鈕(有設定超連結的),全都無法作用了

    6. 老師您好,佔用一下版面問個小問題。
      也是和TextFiled有關,
      我是在TextFiled中使用外部導入的html格式,
      但出現了個大問題,
      就是沒辦法正確得知TextFiled能完全顯示出文字時的height,
      我一開始先是使用autoSize配合wordWrap讓文字框只會往下長,
      但即使是相同的文字,它自動得出的height每次都不一樣,
      後來只好改用numLines乘上大約的行高來解決,
      不過這樣背景和文字就沒辦法完全配合。

      比較細部的情況可以看我試做的照片集
      http://tinyurl.com/2n8buk

      點選照片後,下方的文字沒辦法和邊緣配合,真的是很苦惱…
      還有望老師解答,謝謝。

      對了~忘了幫老師宣傳一下新書,
      這本書寫的很棒喔,很適合像我這樣的入門者學習,
      有興趣學as3的人都應該去買個一本^_^

    7. Dear Edward:

      抱歉,我忘記了 :p
      請多包含….

    8. 老師我有買啦
      之前也有在這邊留言
      提醒你書裡漏圖的事情
      記得嗎

      不過目前我只看到第七章
      mask的地方剛翻了一下
      已經跑到最後幾頁了
      還來不及看到那邊

    9. Dear Edward:

      可見你沒買我的書喔 XD
      書上有教怎麼用設定遮罩,我是用動態鏡面倒影的特效去示範這個應用.
      使用 mask這個property就可以了.

    10. 老師賣書蠻賣力的
      呵呵

      可以再借版面問一下問題嗎
      前幾天工作時
      要將一個MC設為另一個MC的MASK
      但是AS3好像沒有setMask()這個方法了
      當時求快所以改發佈成2.0當場搞定
      請問老師他跑哪裡了咧……

      用3.0總是有點挫折..不習慣…..