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

首頁 > 辦公 > Flash > 正文

FLASH AS鼠標拖拽與旋轉MC教程

2020-07-17 13:05:42
字體:
來源:轉載
供稿:網友

在網上看到某個游戲既要拖拽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;

}
}
}

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 昭平县| 海门市| 蓬莱市| 陆丰市| 抚顺县| 青铜峡市| 岳西县| 阿拉善左旗| 宁海县| 岐山县| 陆丰市| 新野县| 乌鲁木齐县| 那曲县| 绥德县| 堆龙德庆县| 凌源市| 明光市| 油尖旺区| 呼伦贝尔市| 玉屏| 贵港市| 武城县| 武邑县| 县级市| 九龙县| 象山县| 辽中县| 双牌县| 永善县| 南投县| 上蔡县| 师宗县| 武威市| 海阳市| 奇台县| 宁蒗| 陆丰市| 迭部县| 化德县| 宜黄县|