[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,一个是旧版本的,一个是新版的,这两个文件里的类 ...
随机推荐
- linux服务之openfiler
架构:b/s 服务器端:封装好的linux系统 客户端:浏览器 相关包:封装好的linux系统 Openfiler imports user and group information from ce ...
- GridView中实现点击某行的任意位置就选中该行
来源:http://auv2009.blog.163.com/blog/static/68858712200992731010670/ 在 GridView中增加一列:(该列是选择按钮,让其不显示) ...
- TKinter布局之grid 网格布局
1.由于我们的程序大多数都是矩形,因此特别适合于网格 布局,也就是 grid 布局. 2.使用 grid 布局的时候,我们使用 grid 函数,在里面指 定两个参数,用 row 表示行,用 colum ...
- Ext is not defined
最近由于项目设计到Extjs所以也准备研究一下,可是谁知道刚写好一个demo,运行的时候死活出不来界面,于是用firebug看了一下,出现:Ext is not defined,因为刚开始学也不知道是 ...
- WordPress中"无法将上传的文件移动至"错误的解决方法
#chown -R www:www /wwwroot 今天在网页上传图片到博客,结果提示:“无法将上传的文件移动至 /home/wwwroot/wp-content/uploads/2013/”,郁闷 ...
- Js数组去重复取唯一值
function isBigEnough(element) { return element >= 10; } var filtered = [12, 5, 8, 130, 44].filter ...
- java生成随机字符串uuid
GUID是一个128位长的数字,一般用16进制表示.算法的核心思想是结合机器的网卡.当地时间.一个随即数来生成GUID.从理论上讲,如果一台机器每秒产生10000000个GUID,则可以保证(概率意义 ...
- 读书笔记:应用随机过程:概率模型导论:Aloha协议问题
例4.16,Aloha协议:就本书例题所涉及的部分来说,几乎等同于CSMA.这个例题重写如下: 考察一个包含多个设备的通信系统,其中在每个时间段发送信息的设备个数是独立同分布的.......每个设备将 ...
- vmware 没挂载光盘解决方案
一定要选中上方的'已连接'
- HDMI EDID解读
现在的显示设备比如显示器,电视等都HDMI接口,那通常每个HDMI接口都保留有一份EDID数据,这个数据可以存在程序里面由系统启动过程中来初始化,更常见的做法是每个HDMI口会有一个EEPROM来保存 ...