一段很简单as3的代码有个疑问想请教下,会的帮我下!
时间:2011-06-16
来源:互联网
刚学AS3,遇到了问题来这里求助了,希望高手帮下忙解决下在下的疑问(越通俗越好啊呵呵)
我先简单的描述一下,下面的代码是可用的,舞台上一个正方形rect_mc,一个圆形circle_mc,鼠标按下哪个图形时,哪个图形就会顶置,鼠标按住不放时,所按下的图形跟随鼠标移动,鼠标松开则图形停止。
问题是代码用的★1位置如果换成 dObject=DisplayObject(eve.target); 会出现,按下某个图形时,那图形会一直跟随鼠标,松开后也跟随,如果这时把 ★1位置的
stage.addChild(dObject);给注释掉会发现另一种情况,按下跟随松开停止,但是所按下的图形没办法顶置,在下方还是下方。我trace(eve.target)和trace(eve.currentTarget)发现trace(eve.target)是[Object MovieClip]而trace(eve.currentTarget)确实[Object TimeLine_1]这是什么?addChild()把后者加入到显示列表才正确?疑问,懂得请帮忙下。再次谢谢啦。
import flash.events.MouseEvent;
import flash.display.MovieClip;
import flash.display.DisplayObject;
var offx:Number;
var offy:Number;
var dObject:DisplayObject;
function startDray(eve:MouseEvent) //按下鼠标感应事件
{
dObject=DisplayObject(eve.currentTarget); // ★1 将对应的事件处理者转换成 addChild可用的 displayObject类型
offx=eve.stageX-dObject.x;
offy=eve.stageY-dObject.y;
stage.addChild(dObject); // ★2
stage.addEventListener(MouseEvent.MOUSE_MOVE,movefun);
}
function movefun(eve:MouseEvent) //鼠标移动时的事件
{
dObject.x=eve.stageX-offx;
dObject.y=eve.stageY-offy;
eve.updateAfterEvent();
}
function stopDray(eve:MouseEvent) //松开鼠标感应事件
{
stage.removeEventListener(MouseEvent.MOUSE_MOVE,movefun);
}
circle_mc.addEventListener(MouseEvent.MOUSE_DOWN,startDray);
circle_mc.addEventListener(MouseEvent.MOUSE_UP,stopDray);
rect_mc.addEventListener(MouseEvent.MOUSE_DOWN,startDray);
rect_mc.addEventListener(MouseEvent.MOUSE_UP,stopDray);
/*************************************/
flacs cs3版本的
mouseMoveEvent2.rar (5.82 KB)
[ 本帖最后由 mihuhaidao 于 2011-6-16 18:09 编辑 ]
我先简单的描述一下,下面的代码是可用的,舞台上一个正方形rect_mc,一个圆形circle_mc,鼠标按下哪个图形时,哪个图形就会顶置,鼠标按住不放时,所按下的图形跟随鼠标移动,鼠标松开则图形停止。
问题是代码用的★1位置如果换成 dObject=DisplayObject(eve.target); 会出现,按下某个图形时,那图形会一直跟随鼠标,松开后也跟随,如果这时把 ★1位置的
stage.addChild(dObject);给注释掉会发现另一种情况,按下跟随松开停止,但是所按下的图形没办法顶置,在下方还是下方。我trace(eve.target)和trace(eve.currentTarget)发现trace(eve.target)是[Object MovieClip]而trace(eve.currentTarget)确实[Object TimeLine_1]这是什么?addChild()把后者加入到显示列表才正确?疑问,懂得请帮忙下。再次谢谢啦。
import flash.events.MouseEvent;
import flash.display.MovieClip;
import flash.display.DisplayObject;
var offx:Number;
var offy:Number;
var dObject:DisplayObject;
function startDray(eve:MouseEvent) //按下鼠标感应事件
{
dObject=DisplayObject(eve.currentTarget); // ★1 将对应的事件处理者转换成 addChild可用的 displayObject类型
offx=eve.stageX-dObject.x;
offy=eve.stageY-dObject.y;
stage.addChild(dObject); // ★2
stage.addEventListener(MouseEvent.MOUSE_MOVE,movefun);
}
function movefun(eve:MouseEvent) //鼠标移动时的事件
{
dObject.x=eve.stageX-offx;
dObject.y=eve.stageY-offy;
eve.updateAfterEvent();
}
function stopDray(eve:MouseEvent) //松开鼠标感应事件
{
stage.removeEventListener(MouseEvent.MOUSE_MOVE,movefun);
}
circle_mc.addEventListener(MouseEvent.MOUSE_DOWN,startDray);
circle_mc.addEventListener(MouseEvent.MOUSE_UP,stopDray);
rect_mc.addEventListener(MouseEvent.MOUSE_DOWN,startDray);
rect_mc.addEventListener(MouseEvent.MOUSE_UP,stopDray);
/*************************************/
flacs cs3版本的

[ 本帖最后由 mihuhaidao 于 2011-6-16 18:09 编辑 ]
作者: mihuhaidao 发布时间: 2011-06-16
没文件,回答不方便
不方便测试.如果要回复你的帖子还需要复制粘贴一大堆代码,并根据代码去摆放和制作代码中涉及的元件,非常不方便.
(不要说文件太大,无法上传.你可以分卷压缩,你可以申请邮件告诉大家登陆地址,用户名,密码.你可以选择满大街都有的免费网盘.)
不方便测试.如果要回复你的帖子还需要复制粘贴一大堆代码,并根据代码去摆放和制作代码中涉及的元件,非常不方便.
(不要说文件太大,无法上传.你可以分卷压缩,你可以申请邮件告诉大家登陆地址,用户名,密码.你可以选择满大街都有的免费网盘.)
作者: flash023 发布时间: 2011-06-16
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28