[ActionScript 3.0] AS3 用于拖动对象时跟随鼠标的缓动效果
package com.fylibs.components.effects
{
import flash.display.DisplayObject;
import flash.events.Event;
import flash.events.MouseEvent; /**
* 用于拖动对象时的缓动效果
* @author Frost.Yen
* @E-mail 871979853@qq.com
* @create 2015-12-11 下午3:22:27
*
*/
public class DragMove
{
private var _direction:String = "horizontal";
private var _ratio:Number = 0.900000;
/**
* 按下的坐标(当horizontal时为x坐标,当vertical时为y坐标)
*/
private var _downCoor:Number;
/**
* 移动的坐标(当horizontal时为x坐标,当vertical时为y坐标)
*/
private var _moveCoor:Number;
/**
* 缓动偏移量
*/
private var _offset:Number;
/**
* 坐标标记(当horizontal时为x,当vertical时为y)
*/
private var _coor:String = "mouseX";
/**
* 标记是否按下状态
*/
private var _isDown:Boolean;
private var _target:DisplayObject;
private var _max:Number;
private var _min:Number;
/**
* 拖拽缓动
* @param target 需要拖拽的对象
* @param max 拖拽对象的最大坐标值
* @param min 拖拽对象的最小坐标值
* @param direction 缓动方向
*/
public function DragMove(target:DisplayObject,max:Number,min:Number,direction:String="horizontal")
{
_max = max;
_min = min;
_direction = direction;
_direction == "horizontal"?_coor = "mouseX":_coor = "mouseY";
_target = target;
_target.addEventListener(MouseEvent.MOUSE_DOWN,onDown);
}
/**
* 刷新
* @param max 拖拽对象的最大坐标值
* @param min 拖拽对象的最小坐标值
*/
public function refresh(max:Number,min:Number):void
{
_max = max;
_min = min;
}
private function onDown(e:MouseEvent):void
{
_isDown = true;
_downCoor = _target[_coor];
_target.stage.addEventListener(MouseEvent.MOUSE_MOVE, onMove);
_target.stage.addEventListener(MouseEvent.MOUSE_UP, onUp);
_target.addEventListener(Event.ENTER_FRAME,onEnterFrame);
}
private function onEnterFrame(e:Event):void
{
_offset = _offset * _ratio;
_target.x = _target.x + _offset;
if (_target.x < _min){
_target.x = _min ;
}
if (_target.x > _max){
_target.x = _max;
}
if(Math.abs(_offset)<0.001){
_offset+=0.1;
_target.removeEventListener(Event.ENTER_FRAME,onEnterFrame);
}
}
private function onMove(e:MouseEvent):void
{
if (_isDown) {
_moveCoor = _target[_coor];
_offset = _moveCoor - _downCoor
_offset = _offset / 20;
}
}
private function onUp(e:MouseEvent):void
{
_isDown = false;
_target.stage.removeEventListener(MouseEvent.MOUSE_UP, onUp);
_target.stage.removeEventListener(MouseEvent.MOUSE_MOVE, onMove); }
/**
* 移动方向,horizontal横向,vertical纵向
*/
public function get direction():String
{
return _direction;
} /**
* @private
*/
public function set direction(value:String):void
{
_direction = value;
} /**
* 缓动系数
*/
public function get ratio():Number
{
return _ratio;
} /**
* @private
*/
public function set ratio(value:Number):void
{
_ratio = value;
} }
}
[ActionScript 3.0] AS3 用于拖动对象时跟随鼠标的缓动效果的更多相关文章
- [ActionScript 3.0] AS3 用于拖动对象时一次一页的缓动
package com.fylibs.components.effects{ import com.tweener.transitions.Tweener; import flash.display. ...
- WPF中ListBox滚动时的缓动效果
原文:WPF中ListBox滚动时的缓动效果 上周工作中遇到的问题: 常规的ListBox在滚动时总是一格格的移动,感觉上很生硬. 所以想要实现类似Flash中的那种缓动的效果,使ListBox滚动时 ...
- [ActionScript 3.0] as3处理xml的功能和遍历节点
as3比as2处理xml的功能增强了N倍,获取或遍历节点非常之方便,类似于json对像的处理方式. XML 的一个强大功能是它能够通过文本字符的线性字符串提供复杂的嵌套数据.将数据加载到 XML 对象 ...
- [ActionScript 3.0] AS3.0 动态加载显示内容
可以将下列任何外部显示资源加载到 ActionScript 3.0 应用程序中: 在 ActionScript 3.0 中创作的 SWF 文件 — 此文件可以是 Sprite.MovieClip 或扩 ...
- [ActionScript 3.0] AS3 深入理解Flash的安全沙箱Security Domains
简介 如果你还没有与复杂的的安全域(security domain)和应用程序域(application domain)问题打过交道,那么你真是个幸运的家伙.当你在加载外部内容(然后他们开始播放)的时 ...
- [ActionScript 3.0] AS3.0 对象在一定范围随机显示不重叠
import flash.geom.Rectangle; import flash.display.MovieClip; import flash.display.Sprite; var arr:Ar ...
- [ActionScript 3.0] AS3.0 对象在矩形范围随机运动
package com.views { import flash.display.Bitmap; import flash.display.MovieClip; import flash.displa ...
- [ActionScript 3.0] AS3.0 Loader加载子swf时是否需要指定新的应用程序域ApplicationDomain
实际应用中, Loader加载子swf时是否需要指定新的应用程序域ApplicationDomain,需要择情况而定. 1.如果在本地将项目位置添加到flashplayer受信任位置(上一篇文章所述) ...
- [ActionScript 3.0] as3.0加载as2.0的swf时获取as2.0的实际舞台尺寸
var loader:Loader = new Loader(); loader.contentLoaderInfo.addEventListener(Event.INIT, initHandler) ...
随机推荐
- ComboPooledDataSource 连接池耗完
这里发现时由于代码里手动加载 ApplicationContext.xml文件造成的: 问题代码: ApplicationContext context = new ClassPathXmlAppli ...
- SaaS、PaaS和IaaS
•SaaS(软件即服务) •PaaS(平台即服务) •IaaS(基础架构即服务)
- linux服务之upstart与systemd
http://blog.fens.me/linux-upstart/ rpm -ql initscripts|more [root@84-monitor init]# rpm -qf /etc/ini ...
- unity, Animation crossfade需要两动画在时间上确实有交叠
unity现在播动画都用Animator了,但公司的老项用的还是Animation,今天遇到一个bug,是两个动画的衔接处不连贯. 最后发现是由于A动画已经播完之后B动画才开始播,而且还用了cross ...
- centos6.5 安装iptables
阿里云默认是没有安装iptables 安装 yum install -t iptables yum install iptables-services 检查iptables服务的状态 service ...
- sql常用语句--转载
一.基础 .说明:创建数据库 CREATE DATABASE database-name .说明:删除数据库 drop database dbname .说明:备份sql server --- 创建 ...
- Hadoop学习地址
hortonworks: http://zh.hortonworks.com/hdp/downloads/ http://zh.hortonworks.com/hadoop-tutorial/supe ...
- 每日学习心得:找不到类型{0},它在 ServiceHost 指令中提供为 Service 特性值,或在配置元素...中提供,cellspacing、rowspacing属性
2013-7-6 1. 找不到类型“WCFService.Service1”,它在 ServiceHost 指令中提供为 Service 特性值,或在配置元素 syste ...
- wcf stream 不知道长度的情况下,读取stream
http://bbs.csdn.net/topics/360163784 string filepath = @"http://ww4.sinaimg.cn/thumbnail/6741e0 ...
- 在Myeclipse中移除项目对Hibernate的支持
在Myeclipse中移除项目对Hibernate的支持 在使用Hibernate框架进行开发时可能会遇到配置错误或者需要删除Hibernate支持的情况.下面就说一下如何彻底移除项目的Hiberna ...