FLASH中,图片在指定范围内拖动 ,为什么不是以按下鼠标是为基点拖动
as3.0代码如下:importflash.events.MouseEvent;//载入需要使用的类,Flash自动添加语句importflash.geom.Point;...
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;
}
//如果图片超出允许范围,则将图片超出的方向重置为允许的最大值
} 展开
代码如下:
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个回答
展开全部
首先,不知道你的埋贺代码有什么 问题,无法达到你说的效果。其次,如下几行就李液腊可以完成你要的功能了。
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();
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询