+ -
当前位置:首页 → 问答吧 → 一段很简单as3的代码有个疑问想请教下,会的帮我下!

一段很简单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)
mouseMoveEvent2.rar (5.82 KB)
下载次数: 0
2011-6-16 18:08


[ 本帖最后由 mihuhaidao 于 2011-6-16 18:09 编辑 ]

作者: mihuhaidao   发布时间: 2011-06-16

没文件,回答不方便
不方便测试.如果要回复你的帖子还需要复制粘贴一大堆代码,并根据代码去摆放和制作代码中涉及的元件,非常不方便.

(不要说文件太大,无法上传.你可以分卷压缩,你可以申请邮件告诉大家登陆地址,用户名,密码.你可以选择满大街都有的免费网盘.)

作者: flash023   发布时间: 2011-06-16