FLASH中,图片在指定范围内拖动 ,为什么不是以按下鼠标是为基点拖动

as3.0
代码如下:
import flash.events.MouseEvent;//载入需要使用的类,Flash 自动添加语句
import flash.geom.Point;//载入需要使用的类,Flash 自动添加语句

var _x:Number = new Number(0);//需定义范围的左上角坐标X值
var _y:Number = new Number(0);//需定义范围的左上角坐标Y值
var _width:Number = new Number(768);//需定义范围的宽度(向右)
var _height:Number = new Number(600);//需定义范围的高度(向下)
var rct:Rectangle = new Rectangle(_x,_y,_width,_height);//定义一个矩形,包含了你需要允许的拖动范围
var mouse:Point=new Point();//定义一个点,用于记录每次鼠标按下时鼠标相对于图片的位置

mc.mouseEnabled = false;//使MC不接受鼠标事件(穿透)
stage.addEventListener(MouseEvent.MOUSE_UP,_onMouseUp);//侦听鼠标弹起动作
stage.addEventListener(MouseEvent.MOUSE_DOWN,_onMouseDown);//侦听鼠标按下动作
function _onMouseDown(event:MouseEvent=null):void//定义鼠标按下动作的事件处理函数
{
mouse=new Point(event.stageX,event.stageY);//记录鼠标的当前位置
stage.addEventListener(MouseEvent.MOUSE_MOVE,_onMouseMove);//侦听鼠标移动动作
}
function _onMouseUp(event:MouseEvent=null):void//定义鼠标弹起动作的事件处理函数
{
stage.removeEventListener(MouseEvent.MOUSE_MOVE,_onMouseMove);//取消侦听鼠标移动动作
}
function _onMouseMove(event:MouseEvent=null):void//定义鼠标弹起动作的事件处理函数
{
mc.x=event.stageX-mouse.x;//使得mc以鼠标按下时的位置为基点而移动
mc.y=event.stageY-mouse.y;//使得mc以鼠标按下时的位置为基点而移动
if(mc.x>rct.left){
mc.x=rct.left;
mouse.x=event.stageX;
}
if(mc.x+mc.width<rct.right){
mc.x=rct.right-mc.width;
mouse.x=event.stageX-mc.width;
}
if(mc.y>rct.top){
mc.y=rct.top;
mouse.y=event.stageY;
}
if(mc.y+mc.height<rct.bottom){
mc.y=rct.bottom-mc.height;
mouse.y=event.stageY-mc.height;
}
//如果图片超出允许范围,则将图片超出的方向重置为允许的最大值
}

第1个回答  2017-09-20

首先,不知道你的代码有什么 问题,无法达到你说的效果。其次,如下几行就可以完成你要的功能了。

import flash.geom.Rectangle;

mc.addEventListener(MouseEvent.MOUSE_DOWN,MouseDownEvent);
mc.addEventListener(MouseEvent.MOUSE_UP,MouseUpEvent);
function MouseDownEvent(e:MouseEvent):void
{
var rect:Rectangle=new Rectangle(0+mc.width/2,0+mc.height/2,800-mc.width/2,600-mc.width/2);
mc.startDrag(false,rect);
}
function MouseUpEvent(e:MouseEvent):void
{
mc.stopDrag();
}

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网