网站导航免费论文 原创论文 论文搜索 定作论文 网学软件 学术大家 资料中心 会员中心 问题解答 定作论文 大学论文导航 设计下载 最新论文 下载排行 原创论文 论文源代码
返回网学首页
网学联系
最新论文 推荐专题 热门论文 素材专题
当前位置: 网学 > 设计资源 > Flash教程 > 正文

FLASH AS教程:鼠标拖拽与旋转MC

来源:http://myeducs.cn 联系QQ:点击这里给我发消息 作者: 佚名 来源: 网络 发布时间: 14/07/21

鉴于大家对Flash教程十分关注,我们编辑小组在此为大家搜集整理了“FLASH AS教程:鼠标拖拽与旋转MC”一文,供大家参考学习!

 在网上看到某个游戏既要拖拽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;

  

    }

   }

  }

  • 上一篇资讯: [Flash教程]
  • 网学推荐

    免费论文

    原创论文

    设为首页 | 加入收藏 | 论文首页 | 论文专题 | 设计下载 | 网学软件 | 论文模板 | 论文资源 | 程序设计 | 关于网学 | 站内搜索 | 网学留言 | 友情链接 | 资料中心
    版权所有 QQ:3710167 邮箱:3710167@qq.com 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
    Copyright 2008-2015 myeducs.Cn www.myeducs.Cn All Rights Reserved 湘ICP备09003080号