[ActionScript 3.0] AS3 用于拖动对象时一次一页的缓动
package com.fylibs.components.effects{
import com.tweener.transitions.Tweener;
import flash.display.DisplayObject;
import flash.display.DisplayObjectContainer;
import flash.display.InteractiveObject;
import flash.display.Sprite;
import flash.events.MouseEvent;
import flash.geom.Rectangle;
/**
* 用于拖动时一次一页的缓动
* @author Frost.Yen
* @E-mail 871979853@qq.com
* @create 2015-12-11 下午5:06:57
*
*/
public class DragMovePage
{
private var _direction:String = "horizontal";
/**
* 按下的坐标(当horizontal时为x坐标,当vertical时为y坐标)
*/
private var _downCoor:Number;
/**
* 移动的坐标(当horizontal时为x坐标,当vertical时为y坐标)
*/
private var _moveCoor:Number;
/**
* 坐标标记((当horizontal时为mouseX,当vertical时为mouseY))
*/
private var _mouseCoor:String = "mouseX";
/**
* 标记是否按下状态
*/
private var _isDown:Boolean;
private var _slidingDis:Number;
private var _slidingNum:Number = 300;
private var _page:uint;
private var _dis:uint;
private var _count:int;
private var _target:Sprite;
private var _dotBar:Sprite;
/**
* 拖拽缓动
* @param target 需要拖拽的对象
* @param page 页数
* @param dis 每页的距离
* @param direction 缓动方向
* @param dotBar 指示当前页的小圆点
*/
public function DragMovePage(target:Sprite,page:uint,dis:uint,direction:String="horizontal",dotBar:Sprite=null)
{
_page = page;
_dis = dis;
_direction = direction;
_dotBar = dotBar;
_direction == "horizontal"?_mouseCoor = "mouseX":_mouseCoor = "mouseY";
_target = target;
_target.addEventListener(MouseEvent.MOUSE_DOWN,onDown);
}
/**
* 拖拽缓动
* @param page 页数
* @param dis 每页的距离
*/
public function refresh(page:uint,dis:uint):void
{
_page = page;
_dis = dis;
}
private function onDown(e:MouseEvent):void
{
Tweener.removeTweens(_target);
_isDown = true;
_downCoor = _target.parent[_mouseCoor];
//注意,-(_page)*_dis中为什么是page,而不是page-1
_direction == "horizontal"?_target.startDrag(false,new Rectangle(-(_page)*_dis,_target.y,(_page+1)*_dis,0)):_target.startDrag(false,new Rectangle(_target.x,-(_page)*_dis,0,(_page+1)*_dis));
_target.stage.addEventListener(MouseEvent.MOUSE_MOVE, onMove);
_target.stage.addEventListener(MouseEvent.MOUSE_UP, onUp);
}
private function onMove(e:MouseEvent):void
{
_moveCoor = _target.parent[_mouseCoor];
}
private function onUp(e:MouseEvent):void
{
_isDown = false;
_moveCoor = _target.parent[_mouseCoor];
_target.stopDrag();
_target.stage.removeEventListener(MouseEvent.MOUSE_UP, onUp);
_target.stage.removeEventListener(MouseEvent.MOUSE_MOVE, onMove);
_slidingDis = _downCoor-_moveCoor;
if(_slidingDis>_slidingNum){
_count++;
}else if(_slidingDis<-_slidingNum){
_count--;
}
if(_count>=_page){
_count = _page-1;
}else if(_count<0){
_count = 0;
}
_direction == "horizontal"?Tweener.addTween(_target,{x:-_count*_dis,time:0.7,transition:"easeOutCubic",onComplete:moveEnd}):Tweener.addTween(_target,{y:-_count*_dis,time:0.7,transition:"easeOutCubic",onComplete:moveEnd});
}
private function moveEnd():void
{
if(_dotBar){
for(var i:int = 0;i<_dotBar.numChildren;i++){
if(_count == i){
_dotBar.getChildAt(i).alpha = 1;
}else{
_dotBar.getChildAt(i).alpha = 0.5;
}
}
}
}
/**
* 移动方向,horizontal横向,vertical纵向
*/
public function get direction():String
{
return _direction;
}
/**
* @private
*/
public function set direction(value:String):void
{
_direction = value;
}
/**
* 手指或者鼠标滑动的实际矢量距离(有方向)
*/
public function get slidingDis():Number
{
return _slidingDis;
}
/**
* 当手指或者鼠标划过的距离大于这个值时才识别为翻页
*/
public function get slidingNum():Number
{
return _slidingNum;
}
/**
* @private
*/
public function set slidingNum(value:Number):void
{
_slidingNum = value;
}
}
}
[ActionScript 3.0] AS3 用于拖动对象时一次一页的缓动的更多相关文章
- [ActionScript 3.0] AS3 用于拖动对象时跟随鼠标的缓动效果
package com.fylibs.components.effects { import flash.display.DisplayObject; import flash.events.Even ...
- [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.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) ...
- [ActionScript 3.0] AS3 深入理解Flash的安全沙箱Security Domains
简介 如果你还没有与复杂的的安全域(security domain)和应用程序域(application domain)问题打过交道,那么你真是个幸运的家伙.当你在加载外部内容(然后他们开始播放)的时 ...
- [ActionScript 3.0] AS3 深入理解Flash的 应用程序域Application Domains
简介 网上有很多flash,通常都不需要显示的使用应用程序域,因为默认的应用程序域就够用了.其实复杂的情况下需要用到应用程序域,比如说有两个不同的swf,一个是旧版本的,一个是新版的,这两个文件里的类 ...
随机推荐
- c++中的dictionary对象:map的使用备忘
#include <map> #include <iostream> using namespace std; void main(){ map <string, int ...
- ABBYY把pdf转换成word的方法
有时候我们在网上下载的资料文献是PDF格式文档,遇到喜欢的字句总忍不住想要收藏起来,但是PDF文档不同于普通的Word文档可以直接进行复制粘贴,需要下载安装相关的编辑工具,才能对文字内容进行编辑.倒不 ...
- TFS 强制撤销别人签出的代码
有个同事离职一段时间了,今天改一下她的代码,发现有个文件签出了,晕,而且TFS用的也是只允许单用户签出. 1,找原来的用的机器,已经被人占用了,系统已经重做. 2,只有用命令行来搞了. 大致如下: t ...
- Python命令行中输入pip提示不是内部或外部命令
WIN764位,Python34 输入命令python -m pip
- PostgreSQL数据的导出导入
PostgreSQL数据的导出导入 导出PostgreSQL数据库中的数据: $ pg_dump -U postgres -f mydatabase.sql mydatabase 导入数据时首先创 ...
- Android退出程序时的"再按一次退出"实现
android 个人觉得当用户按下后退键时,出现"再按一次退出"的提示防止误操作比弹出一个对话框是会更人性化的.话不多说上代码: 第一种:重写onKeyDown来监听: long ...
- trunc函数
date 为必要参数,是输入的一个日期值 fmt 参数可忽略,是日期格式,用以指定的元素格式来截去输入的日期值.忽略它则由最近的日期截去 下面是该函数的使用情况: trunc(sysdate,'yyy ...
- HttpSessionBindingListener和HttpSessionAttributeListener区别 - gengkunpeng的专栏 - 博客频道 - CSDN.NET
分享到 一键分享 QQ空间 新浪微博 百度云收藏 人人网 腾讯微博 百度相册 开心网 腾讯朋友 百度贴吧 豆瓣网 搜狐微博 百度新首页 QQ好友 和讯微博 更多... 百度分享 HttpSession ...
- LitDB笔记
首先,LitDB存储的不是json,而是bson.这里就有问题了,json是可以无限扩展的,但是bson不行.所有insert的时候需要使用实体类而不是hashtable.但是它又提供了一个叫做Bso ...
- html body标签的几个属性 禁用鼠标右键,禁用鼠标选中文字等
<body oncontextmenu='return false' ondragstart='return false' onselectstart ='return false' onsel ...