国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 辦公 > Flash > 正文

[FLASH基礎教程合集一]鼠標拖拽與旋轉MC

2020-01-28 14:01:03
字體:
來源:轉載
供稿:網友

  在網上看到某個游戲既要拖拽mc又要旋轉mc,拖拽用鼠標事件實現,而旋轉需要用shift+鼠標click事件。總覺得太麻煩了。故而希望自己能找到一種只用鼠標就能同時實現拖拽與旋轉功能的方法。

  結果發現MOUSE_DOWN+MOUSE_UP竟然相當于一次CLICK事件。即每次釋放鼠標左鍵,停止拖拽時,mc會旋轉一次,而這個顯然不是預期的效果。

  于是,開始明白了,那個程序員為什么要添加shift鍵的偵聽了。

  可是,不用shift鍵就不能實現這種功能嗎?我開始考慮如何區分MOUSE_DOWN+MOUSE_UP與CLICK.。

  方法一:設置時間間隔。時間不太好把握,pass掉。

  方法二:用鼠標的相對位置。倘若mc未移動則視為click事件。正解!

  package{

   import flash.display .*;

   import flash.geom .Point;

   import flash.events.*;

   public class main extends Sprite{

    private var mc:MC;

    private var clickOffset:Point;

    private var mouseLoc:Point;

    public function main(){

   mc=new MC();

   addChild(mc);

   mc.x=200;

   mc.y=200;

   mc.addEventListener(MouseEvent.CLICK ,rot);

   mc.addEventListener(MouseEvent.MOUSE_DOWN,startdrag);

   mc.addEventListener(Event.ENTER_FRAME. ,drag);

   stage.addEventListener(MouseEvent.MOUSE_UP,stopdrag);

    }

    private function startdrag(e:MouseEvent ){

   mouseLoc=new Point(e.stageX,e.stageY);

   clickOffset=new Point(e.stageX-mc.x,e.stageY-mc.y);

    }

    private function drag(e:Event){

   if(clickOffset==null) return;

   mc.x=mouseX-clickOffset.x;

   mc.y=mouseY-clickOffset.y;

    }

    private function stopdrag(e:MouseEvent ){

   clickOffset=null;

    }

    private function rot(e:MouseEvent){

   if(!mouseLoc.equals(new Point(e.stageX,e.stageY)))return;

    mc.rotation+=30;

  

    }

   }

  }

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 嘉黎县| 长治县| 阜康市| 合江县| 旬阳县| 木兰县| 平果县| 海兴县| 栾川县| 台南市| 平原县| 恩平市| 宣汉县| 青河县| 武川县| 吴桥县| 禄丰县| 宁南县| 炎陵县| 阳春市| 辽宁省| 广宁县| 仪陇县| 天台县| 宁乡县| 浮梁县| 利辛县| 黔南| 临清市| 内乡县| 凤冈县| 阆中市| 丰顺县| 临朐县| 淮安市| 舟曲县| 垫江县| 白河县| 图们市| 云梦县| 自治县|