flash怎么限制一个可移动的元件的移动范围
flash怎么限制一个可移动的元件的移动范围(舞台)顺便求一个能时常帮助我的大神的QQ(FLASH新手)...
flash怎么限制一个可移动的元件的移动范围 (舞台)
顺便求一个能时常帮助我的大神的QQ(FLASH新手) 展开
顺便求一个能时常帮助我的大神的QQ(FLASH新手) 展开
2个回答
展开全部
给你一个例子参考:(代码:as3.0)
var rect:Rectangle = new Rectangle(0,0,stage.stageWidth,stage.stageHeight);//更改矩形值可以修改限制范围
mc.addEventListener(MouseEvent.MOUSE_DOWN,downFun);
var dragx:Number;
var dragy:Number;
function downFun(e:MouseEvent):void{
dragx = mc.stage.mouseX-mc.x;
dragy = mc.stage.mouseY-mc.y;
mc.stage.addEventListener(MouseEvent.MOUSE_MOVE,mouseMoveFun);
mc.stage.addEventListener(MouseEvent.MOUSE_UP,mouseUpFun);
}
function mouseMoveFun(e:MouseEvent):void{
mc.x = mc.stage.mouseX-dragx;
mc.y = mc.stage.mouseY-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(e:MouseEvent):void{
mc.stage.removeEventListener(MouseEvent.MOUSE_MOVE,mouseMoveFun);
mc.stage.removeEventListener(MouseEvent.MOUSE_UP,mouseUpFun);
}
其中,mc为舞台的元件,注意,为了降低复杂程度和方便理解,故请将元件的注册点设置成元件的左上角。
代码as2.0,
1、使用startDrag来限制
mc.onMouseDown = function(){
mc.startDrag(false,0,0,Stage.width-mc._width,Stage.height-mc._height);
}
_root.onMouseUp = function(){
mc.stopDrag();
}
mc同as3.0的
2、使用onMouseMove来限制
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;
}
判断方法与as3.0相同。
移动限制,请查看mouseMoveFun函数。
代码已经测试通过。如有问题请追问或私信。
需要帮助的话,请私信发信息过来。
PS:本人为上班族,时有不方便,请谅解。
追答
在设置蜘蛛的x,y之后,再来判断蜘蛛的是否超出舞台了。
由于有角度的旋转,将蜘蛛元件的注册点设置成图形的中心。
注意:最好将蜘蛛制作成正方形,否则在旋转时不方便进行计算,可以在底层添加一个透明的正方形图形来确保蜘蛛是正方形的。
在switch之后,加判断代码,如果超出边边则设置只到边边上去。
if(a_mc.x-a_mc.width/2 < 0){
a_mc.x = a_mc.width/2;
}else if(a_mc.x+mc.width/2> stage.stageWidth){
a_mc.x = stage.stageWidth-a_mc.width/2;
}
if(a_mc.y-a_mc.height/2<0){
a_mc.y = a_mc.height/2;
}else if(a_mc.y+a_mc.height/2> stage.stageHeight){
a_mc.y = stage.stageHeight-a_mc.height/2;
}
另附上附件,请使用CS5.5以上的软件打开。
展开全部
鼠标拖动吗?
拖动代码就自带限制,比如要拖动 mc那就
mc.startDrag(lockCenter:Boolean=false, bounds:Rectangle=null)
其中 bounds 就是你想限定的一个范围,去代码参考里就能找到相关的用法例子
http://help.adobe.com/zh_CN/FlashPlatform/reference/actionscript/3/flash/display/Sprite.html#startDrag()
拖动代码就自带限制,比如要拖动 mc那就
mc.startDrag(lockCenter:Boolean=false, bounds:Rectangle=null)
其中 bounds 就是你想限定的一个范围,去代码参考里就能找到相关的用法例子
http://help.adobe.com/zh_CN/FlashPlatform/reference/actionscript/3/flash/display/Sprite.html#startDrag()
更多追问追答
追问
键盘上下左右控制~~~ 他能跑出舞台 我想把它限制在舞台内 ~~~~要怎么做
追答
在移动的函数里面做判断
if(mc.x stage.stageWidth || mc.y > stage.stageHeight)
{
不动
}
else
{
移动
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询