FLASH中,如何让图片在指定范围内拖动

现在FLASH的背景区域为800*600,而需要的实现拖动效果的图片较大(超过1600*1200),请问如何实现该图片在该背景区域内拖动,意思是要保证背景800*600的... 现在FLASH的背景区域为800*600,而需要的实现拖动效果的图片较大(超过1600*1200),请问如何实现该图片在该背景区域内拖动,意思是要保证背景800*600的区域内一直保持有大图片的部分,不会出去空白的现象?
目前能实现拖动,但是拖动的效果是上下左右的随意拖动,出现背景区域内没有图片或者只有部分图片的现象,请高手指点下,谢谢!
展开
 我来答
Jusbe
推荐于2016-11-16 · TA获得超过205个赞
知道小有建树答主
回答量:448
采纳率:80%
帮助的人:110万
展开全部

//假设你的图片在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;
}
//如果图片超出允许范围,则将图片超出的方向重置为允许的最大值
}
Keensb
2012-11-26 · TA获得超过787个赞
知道小有建树答主
回答量:952
采纳率:0%
帮助的人:739万
展开全部
你这张图片转为影片剪辑后的注册点在哪里?左上还是正中心?

左上角的话

var rec:Rectangle = new Rectangle(-800,-600,800,600);
图片.startDrag(false,rec)

中心的话

var rec:Rectangle = new Rectangle(0,0,800,600);
图片.startDrag(false,rec)
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式