Flash/Flex学习笔记(13):对象拖动(startDrag/stopDrag)
时间:2022-04-23
本文章向大家介绍Flash/Flex学习笔记(13):对象拖动(startDrag/stopDrag),主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
Flash中只有影片MovieClip(准确的讲是Sprite)可以调用startDrag,endDrag,创建对象拖动最简单的办法只要调用这二个方法即可
myobj.addEventListener(MouseEvent.MOUSE_DOWN,pickup);
myobj.addEventListener(MouseEvent.MOUSE_UP,place);
function pickup(e:MouseEvent ):void {
//trace("鼠标按下");
e.target.startDrag();
}
function place(e:MouseEvent):void {
//trace("鼠标抬起");
e.target.stopDrag();
}
其中myobj是舞台上的随便一个MovieClip实例
startDarg还能在拖动时,设定拖动的边界:
var ball:Ball=new Ball(30,Math.random()*0xffffff);
var posX:Number = stage.stageWidth /2;
var posY:Number = stage.stageHeight/2;
var rectSize:Number = 200;
ball.x = posX;
ball.y = posY;
addChild(ball);
ball.addEventListener(MouseEvent.MOUSE_OVER,function(){Mouse.cursor = MouseCursor.HAND });
ball.addEventListener(MouseEvent.MOUSE_OUT,function(){Mouse.cursor = MouseCursor.AUTO });
ball.addEventListener(MouseEvent.MOUSE_DOWN,MouseDownHandler);
function MouseDownHandler(e:MouseEvent) {
stage.addEventListener(MouseEvent.MOUSE_UP, MouseUpHandler);
//第一参数如果为true,则表示拖动时,鼠标所在点自动对齐对象中心--即所谓的锁定中心
ball.startDrag(true,new Rectangle(posX-rectSize/2, posY-rectSize/2, rectSize, rectSize));
//画出边界,方便更直观显示
graphics.clear();
graphics.lineStyle(1);
graphics.drawRect(posX-rectSize/2, posY-rectSize/2, rectSize, rectSize);
}
function MouseUpHandler(e:MouseEvent) {
ball.stopDrag();
}
下面再来一个稍复杂一点的示例:
R1.addEventListener(MouseEvent.MOUSE_DOWN,MouseDownHandler);
R1.addEventListener(MouseEvent.MOUSE_UP,MouseUpHandler);
R2.addEventListener(MouseEvent.MOUSE_DOWN,MouseDownHandler);
R2.addEventListener(MouseEvent.MOUSE_UP,MouseUpHandler);
R3.addEventListener(MouseEvent.MOUSE_DOWN,MouseDownHandler);
R3.addEventListener(MouseEvent.MOUSE_UP,MouseUpHandler);
//trace(numChildren);//当前舞台上的元素总数
var _originPoint:Point = new Point();
//拖动开始时
function MouseDownHandler(e:MouseEvent) {
//trace(e);
//保存原始位置(拖动完成时恢复用)
_originPoint.x=e.target.x;
_originPoint.y=e.target.y;
e.target.startDrag();
setChildIndex(DisplayObject(e.target), numChildren-1);//设置拖动对象的zIndex,否则有可能在拖动过程中被其它组件挡住
//拖动时显示阴影
var _shadow:DropShadowFilter = new DropShadowFilter();
_shadow.distance=10;
_shadow.alpha=0.5;
_shadow.color = 0xFFFFFF;
e.target.filters=[_shadow];
Mouse.cursor = MouseCursor.HAND;
}
//拖动完成时
function MouseUpHandler(e:MouseEvent) {
e.target.stopDrag();
e.target.filters=null;
if (e.target.dropTarget is Shape){
e.target.dropTarget.transform.colorTransform=e.target.transform.colorTransform; //将目标对象颜色设置为与源对象一致
}
//还原初始位置
e.target.x = _originPoint.x;
e.target.y = _originPoint.y;
Mouse.cursor = MouseCursor.ARROW;
}
源文件下载:http://cid-2959920b8267aaca.skydrive.live.com/self.aspx/Flash/DragObject.rar
- PG学习初体验--源码安装和简单命令(r8笔记第97天)
- Pymongo: TypeError: if no direction is specified, key_or_list must be an instance of list
- Java面试系列19-Struts2
- JS游戏开发,让你的静态人物动起来(来自网路)
- Golang语言websocket源码
- 社团划分——Fast Unfolding算法
- 【PSU】AIX 11g RAC自动打GI PSU5
- 详解自动识别验证码,LSTM大显身手
- 智能算法——PageRank
- 【Go 语言社区】Golang 可变参数的使用
- 【Go 语言社区】Golang源码解读之map
- 一则报警信息所折射出来的诸多问题(r9笔记第14天)
- Java面试系列17-编程题-读取服务器字符、实现序列化、计数器、1000阶乘、n出列问题等
- tensorflow(一)windows 10 64位安装tensorflow1.4与基本概念解读tf.global_variables_initializer
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 【redis】闲得无聊,来聊聊当下爆火的 redis集群,顺便搭一个玩玩呗
- 【redis入门】Centos下安装redis
- LeetCode精选好题(五)
- 【leetcode两题选手】MySQL类题目(一)
- 【LeetCode每日一题】(8.11)被围绕的区域
- 二叉树的前中后序遍历(迭代法)(带动画)
- 【LeetCode两题选手】算法类题目(8.8)
- 【LeetCode每日一题】(8.9)复原IP地址(回溯)
- 【回溯算法】N叉树相关技巧
- 【回溯算法】回溯,从入门到入土,七道试题精选、精讲、精练
- 数据结构练手小项目(AVL树、哈希表、循环链表、MySQL数据库)
- 【LeetCode】每日一题(8.2)二叉树展开为链表
- 【小技巧】argc和argv的用法
- 全面分析redis持久化机制
- 【奇技淫巧】-- 接雨水