• as3 影片的拖拽




    拖拽影片有两种方法:使用 mouseMove 事件或使用 startDrag/stopDrag 方法。

    使用 mouseMove 执行拖拽

    通过手动处理 mouseMove 事件,可以更新影片的位置,使影片每次都移动到鼠标指针的位置,这种方法是每次移动多个影片对象的唯一方法。在使用某个影片作为鼠标指针时,常会用到这种方法。一个影片跟随鼠标的位置,如果这时还要拖拽其它的影片,该怎么办?解决办法就是使用 mouseMove 作鼠标跟随,而不是常用的拖拽方法(startDrag/stopDrag)。因此,这是一个非常实用的技术。

    基本策略是:在 mouseDown 事件中,建立一个 mouseMove 处理函数。这个处理函数用于将 ball 的 x,y 坐标赋给当前鼠标的位置。在 mouseUp 事件中,再移除这个处理函数。

    这里有一个技巧,我们要为移动的影片设置 mouseDown 侦听器,而对其它两个事件则在 stage 中进行侦听。因为,有时可能拖拽的速度比 Flash 刷新影片位置的速度要快。这样一来,如果用影片侦听 mouseUp 和 mouseMove 事件,将有可能不会响应,下一时刻也许鼠标指针就已经不在影片上了。请记住,无论鼠标在哪儿, stage 都将把这些事件发送出去。

    使用 startDrag/stopDrag 执行拖拽

    所有的 Sprite 影片和影片剪辑都有名为 startDrag 和 stopDrag 的内置方法,用于实现拖拽。这种方法唯一的缺点就是一次只能拖拽一个对象。 概念非常简单,在 mouseDown 处理函数中调用 starDrag。在 mouseUp 处理函数中调用 stopDrag。

    调用 starDrag 时可以没有参数,也可以使用 left,top,right,bottom 坐标限制拖拽在一个矩形区域内进行。在 AS 3 中有一些变化,要传入一个 Rectangle 对象(flash.geom.Rectangle 类的实例,不要忘了导入)作为参数。

    在 Rectangle 的构造函数中传入这四个参数,方法如下:
    var rect:Rectangle = new Rectangle(10, 10, 200, 200);
    这是 startDrag 的全部语法: startDrag(锁定中心, 矩形边界) 使用下面这条语句改变上一个例子中的 startDrag:
    mymc.startDrag(false, new Rectangle(100, 100, 300, 300));

  • 相关阅读:
    axios
    JavaScript ES6部分语法
    JSP 基础之 JSTL <c:forEach>用法
    JS ajxa请求 返回数据
    java中的各种数据类型在内存中存储的方式
    sql之left join、right join、inner join的区别
    错误”ORA-12560: TNS: 协议适配器错误“解决方法
    Hibernate 和 Mybatis的区别
    eclipse启动几秒后报错 (一闪而过)
    sql ---- count 误区
  • 原文地址:https://www.cnblogs.com/akweb/p/13331846.html
Copyright © 2020-2023  润新知