as3限制鼠标跟随元件移动范围和速度
_(:3我想做一个背景跟随鼠标反方向运动的一个效果(类似于跟随鼠标浏览图片一样)但是我只能写到限制速度,每次鼠标移动到屏幕角落等背景反方向移动完舞台就会露出空白的一部分。...
_(:3 我想做一个背景跟随鼠标反方向运动的一个效果(类似于跟随鼠标浏览图片一样)
但是我只能写到限制速度,每次鼠标移动到屏幕角落等背景反方向移动完舞台就会露出空白的一部分。
要怎样设置元件跟随鼠标移动后到达一个界限后不再移动(比如鼠标左上角,图片往右下角移动,当图片的左上角到达舞台的左上角后就不再移动)
我的元件是mc
addEventListener(Event.ENTER_FRAME ,frame);
Mouse.hide();
function frame(e) {
mc.x-=(mc.x-(stage.stageWidth-stage.mouseX))/3000
mc.y-=(mc.y-(stage.stageHeight-stage.mouseY))/3000
}
舞台大小是760px宽300高
图片大小是940px宽383高 展开
但是我只能写到限制速度,每次鼠标移动到屏幕角落等背景反方向移动完舞台就会露出空白的一部分。
要怎样设置元件跟随鼠标移动后到达一个界限后不再移动(比如鼠标左上角,图片往右下角移动,当图片的左上角到达舞台的左上角后就不再移动)
我的元件是mc
addEventListener(Event.ENTER_FRAME ,frame);
Mouse.hide();
function frame(e) {
mc.x-=(mc.x-(stage.stageWidth-stage.mouseX))/3000
mc.y-=(mc.y-(stage.stageHeight-stage.mouseY))/3000
}
舞台大小是760px宽300高
图片大小是940px宽383高 展开
- 你的回答被采纳后将获得:
- 系统奖励15(财富值+成长值)+难题奖励20(财富值+成长值)
1个回答
展开全部
import flash.geom.Rectangle;
var rect:Rectangle = new Rectangle(0,0,Stage.width,Stage.height);
var dragx:Number;
var dragy:Number;
mc.onMouseDown = function(){
dragx = _root._xmouse-this._x;
dragy = _root._ymouse-this._y;
_root.onMouseMove = mouseMoveFun;
_root.onMouseUp = mouseUpFun;
}
function mouseMoveFun(){
mc._x = _root._xmouse-dragx;
mc._y = _root._ymouse-dragy;
if(mc._x<rect.x){
mc._x = rect.x;
}else if(mc._x+mc._width>rect.width){
mc._x = rect.width-mc._width;
}
if(mc._y<rect.y){
mc._y = rect.y;
}else if(mc._y+mc._height>rect.height){
mc._y = rect.height-mc._height;
}
e.updateAfterEvent();
}
function mouseUpFun(){
delete _root.onMouseMove;
delete _root.onMouseUp;
}
var rect:Rectangle = new Rectangle(0,0,Stage.width,Stage.height);
var dragx:Number;
var dragy:Number;
mc.onMouseDown = function(){
dragx = _root._xmouse-this._x;
dragy = _root._ymouse-this._y;
_root.onMouseMove = mouseMoveFun;
_root.onMouseUp = mouseUpFun;
}
function mouseMoveFun(){
mc._x = _root._xmouse-dragx;
mc._y = _root._ymouse-dragy;
if(mc._x<rect.x){
mc._x = rect.x;
}else if(mc._x+mc._width>rect.width){
mc._x = rect.width-mc._width;
}
if(mc._y<rect.y){
mc._y = rect.y;
}else if(mc._y+mc._height>rect.height){
mc._y = rect.height-mc._height;
}
e.updateAfterEvent();
}
function mouseUpFun(){
delete _root.onMouseMove;
delete _root.onMouseUp;
}
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询