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();
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
深圳市容大彩晶科技有限公司
2024-11-15 广告
2024-11-15 广告
广告机代理优选容大彩晶,深圳市容大彩晶科技有限公司自2007年成立伊始,一直专注于液晶商用显示产品的技术研发及产品服务。公司依托具有自主研发能力、创新高效的技术团队,打造出行业优质商用液晶显示设备。容大彩晶产品涵盖商用液晶显示、多媒体广告机...
点击进入详情页
本回答由深圳市容大彩晶科技有限公司提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询