欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Actionscript 3.0 鼠標事件

 更新時間:2009年02月16日 12:42:02   作者:  
這本書是一本經典的書籍,說實話一些小的AS3的項目是做了好幾個,基本的語法也都知道(其實有面向對象編程語言的基礎后再入門一門新的語言還是很快的)。現(xiàn)在找到了這邊經典書籍完整版,就好好看看,順便寫一些總結。
關于Actionscript 3.0的事件機制,以后分模塊一個一個介紹,最后形成一個完整的文檔。看了第一章,就說說鼠標事件,順便說下我遇到的一個問題。Actionscript 3.0鼠標事件無非就是監(jiān)聽和捕獲鼠標事件,比如Click,DoubleClick等,AS3中鼠標事件包是在flash.events.MouseEvent中。
在這里貼一個簡單ActionScript 3.0實現(xiàn)寫字板程序代碼,結合代碼來理解鼠標的監(jiān)聽,捕獲處理過程。
復制代碼 代碼如下:

package
{
import flash.display.Sprite;
import flash.events.Event;
import flash.events.MouseEvent; //import MouseEvent 包
/**
* @Written by Leezhm, 6th Jun, 2009
* @Contact : Leezhm@126.com
* @author : Leezhm
*
**Last Modified by Leezhm on 6th Jun, 2009
*
*/
[SWF(height = "450", width = "600", backgroundColor = "0xFFFFFF", frameRate = "31")] //設置應用程序屬性
public class Main extends Sprite
{
public function Main():void
{
if (stage)
{
Init();
}
else
{
addEventListener(Event.ADDED_TO_STAGE, Init);
}
}
private function Init(e:Event = null):void
{
removeEventListener(Event.ADDED_TO_STAGE, Init);
// entry point
addEventListener(Event.ENTER_FRAME, OnEnterFrameHandler); //監(jiān)聽ENTER_FRAME事件,一個重要的事件
}
private function OnEnterFrameHandler(e:Event):void //ENTER_FRAME事件的處理函數
{
this.DrawGraphic();
}
private function DrawGraphic():void
{
this.stage.addEventListener(MouseEvent.MOUSE_DOWN, OnMouseDownHandler); //監(jiān)聽鼠標Down事件
}
private function OnMouseDownHandler(e:MouseEvent):void //處理鼠標Down事件
{
this.graphics.lineStyle(2, 0, 1);
this.graphics.moveTo(this.mouseX, this.mouseY);
this.stage.addEventListener(MouseEvent.MOUSE_MOVE, OnMouseMoveHandler); //監(jiān)聽鼠標MOVE事件
}
private function OnMouseMoveHandler(e:MouseEvent):void //鼠標MOVE事件處理函數
{
this.graphics.lineTo(this.mouseX, this.mouseY);
this.stage.addEventListener(MouseEvent.MOUSE_UP, OnMouseUpHandler); //監(jiān)聽鼠標UP事件
}
private function OnMouseUpHandler(e:MouseEvent):void //處理鼠標UP事件
{ // 移除對鼠標DOWN、MOVE和UP事件的監(jiān)聽
this.stage.removeEventListener(MouseEvent.MOUSE_DOWN, OnMouseDownHandler);
this.stage.removeEventListener(MouseEvent.MOUSE_MOVE, OnMouseMoveHandler);
this.stage.removeEventListener(MouseEvent.MOUSE_UP, OnMouseUpHandler);
}
}
}

其實看上面的代碼就很簡單地理解Actionscript 3.0中鼠標事件的處理過程,順便傳一張效果圖片。
     
好了說一個我曾經犯的錯誤,代碼如下:
復制代碼 代碼如下:

package
{
import flash.display.Sprite;
import flash.events.MouseEvent;
public class A extends Sprite
{
public function A()
{
graphics.beginFill(0xFF0000);
graphics.drawCircle(100,100,40);
graphics.endFill();
addEventListener(MouseEvent.CLICK, testclick);
}
private function testclick(event:MouseEvent):void {
trace("Hello World!!!");
}
}
}

實際上上面的這段代碼并不響應鼠標的CLICK事件,為什么,開始我也花了很長時間來查找原因。其實這涉及到Actionscript 3.0的事件實現(xiàn)機制,在這里簡單解釋下:
原因很簡單,因為上面那樣的一個文檔類是空的,根本就沒有任何顯示對象,所以就不會響應鼠標事件了(那個DrawCircle 不能算顯示對象,它只能算是一個背景而已,并不在Actionscript的顯示列表中 ,所以Actionscript事件機制中就不可能向它分發(fā)事件消息)。但下面對以上代碼做一下修改就可以。
復制代碼 代碼如下:

package {
import flash.display.Sprite;
import flash.events.MouseEvent;
public class A extends Sprite {
public function A() {
var _sp:Sprite=new Sprite()
_sp.graphics.beginFill(0xFF0000);
_sp.graphics.drawCircle(100,100,40);
_sp.graphics.endFill();
addChild(sp)
_sp.addEventListener(MouseEvent.CLICK, testclick);
}
private function testclick(event:MouseEvent):void {
trace("Hello World!!!");
}
}
}

對比倆代碼就可以發(fā)現(xiàn),后面的加了一個顯示對象,并在顯示對象上監(jiān)聽鼠標事件。 當然也可以想第一段代碼中那樣在Stage上監(jiān)聽。
注意,直接this.addEventListener這樣來監(jiān)聽的是root,并不是Stage這樣的DisplayObject對象,同樣是不可以的。

相關文章

  • ActionScript 3.0中用XMLSocket與服務器通訊程序(源碼)

    ActionScript 3.0中用XMLSocket與服務器通訊程序(源碼)

    一個簡單的基于XMLSocket的封裝類
    2009-02-02
  • AS3 navigateToURL導致ExternalInterface 執(zhí)行失敗問題

    AS3 navigateToURL導致ExternalInterface 執(zhí)行失敗問題

    AS3 navigateToURL導致ExternalInterface 執(zhí)行失敗問題
    2009-02-02
  • AS3自寫類整理筆記 Dot類

    AS3自寫類整理筆記 Dot類

    拖拽物體1和物體2,就可以看到效果了 index.base.geom.Dot類講解 基本功能:記錄xy兩點
    2008-06-06
  • flash PureMVC 使用例子

    flash PureMVC 使用例子

    昨天下了PureMVC, 看了一天文檔, 迷茫啊, 找例子也沒找到, 后來破解了一個看了一下, 大概地寫了一個簡單的用例, 先算是學習筆記吧, 先把這最簡單的例子做法寫一下吧( 也不知道這種理解是否正確哦~~汗一個!)
    2009-01-01
  • AS3自寫類整理筆記:ByteLoader類

    AS3自寫類整理筆記:ByteLoader類

    該類的主要功能是把swf,jpg,png,gif等文件以字節(jié)的形式加載進來 以便于使用Loader.loadBytes方法,重復加載使用素材 如果圖片格式為jpg,并且是漸進式格式jpeg,那么該類還可以幫助你邊加載邊顯示
    2008-06-06
  • Actionscript 3.0 鼠標事件

    Actionscript 3.0 鼠標事件

    這本書是一本經典的書籍,說實話一些小的AS3的項目是做了好幾個,基本的語法也都知道(其實有面向對象編程語言的基礎后再入門一門新的語言還是很快的)?,F(xiàn)在找到了這邊經典書籍完整版,就好好看看,順便寫一些總結。
    2009-02-02
  • 火山動態(tài)文本滾動條V5[AS3版]

    火山動態(tài)文本滾動條V5[AS3版]

    功能說明:本版滾動條除了繼續(xù)保持體積?。ㄐ∮?K),界面容易修改,資源占用率小的優(yōu)勢外,主要有以下幾點改進: 1,使用AS3編寫。 2,寬高動態(tài)指定。 3,增加滾動條背景點擊事件。 4,消除了鼠標滾輪無法同時準確控制多個文本框的重大BUG。
    2008-03-03
  • Google Analytics在Flash cs3下的使用教程分析

    Google Analytics在Flash cs3下的使用教程分析

    因為工作的原因,最近使用到Google Analytics組件,這個組件在網上的資料很多,但是大部分都是詳談組件的優(yōu)勢的,具體的使用沒有很詳細的說明
    2009-02-02
  • AS3中的反射(速記) 分析

    AS3中的反射(速記) 分析

    詳細了解AS3的反射,請google相關文章,這里只是速記一下
    2008-03-03
  • As3.0 xml + Loader應用代碼

    As3.0 xml + Loader應用代碼

    簡單說說AS3.0中對于XML支持的不同吧: .AS2.0對XML的支持勉勉強強,將就著可以用。而AS3.0中對XML的支持是全方位的,極其強大和靈活的
    2008-03-03

最新評論