FLASH中,如何让图片在指定范围内拖动
现在FLASH的背景区域为800*600,而需要的实现拖动效果的图片较大(超过1600*1200),请问如何实现该图片在该背景区域内拖动,意思是要保证背景800*600的...
现在FLASH的背景区域为800*600,而需要的实现拖动效果的图片较大(超过1600*1200),请问如何实现该图片在该背景区域内拖动,意思是要保证背景800*600的区域内一直保持有大图片的部分,不会出去空白的现象?
目前能实现拖动,但是拖动的效果是上下左右的随意拖动,出现背景区域内没有图片或者只有部分图片的现象,请高手指点下,谢谢! 展开
目前能实现拖动,但是拖动的效果是上下左右的随意拖动,出现背景区域内没有图片或者只有部分图片的现象,请高手指点下,谢谢! 展开
2个回答
展开全部
//假设你的图片在flash中的是一个实例名称为"mc"的影片剪辑,则应在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(800);//需定义范围的宽度(向右)
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;
}
//如果图片超出允许范围,则将图片超出的方向重置为允许的最大值
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询