flash AS3.0 怎么设置元件在舞台的拖动范围。只能x轴左右移动。
2个回答
展开全部
很简单,侦听鼠标事件再做处理就可以了,下面是代码:
//假设你的黑色元件是black,粉色元件是powder
//此变量指示当前鼠标左键是否按下
var down:Boolean=false;
//此变量可以保存点击黑色元件的位置
var point:Point=new Point();
//侦听事件
black.addEventListener(MouseEvent.MOUSE_DOWN,handle);
black.addEventListener(MouseEvent.MOUSE_UP,handle);
//移动事件用stage侦听,也可以侦听ENTER_FRAME事件
stage.addEventListener(MouseEvent.MOUSE_MOVE,handle);
function handle(e:MouseEvent):void
{
if (e.type==MouseEvent.MOUSE_DOWN)
{
down=true;
point.x=black.mouseX;
point.y=black.mouseY;
}
else if (e.type==MouseEvent.MOUSE_UP)
{
down=false;
}
else if (e.type==MouseEvent.MOUSE_MOVE)
{
if (down==true)
{
//黑色元件随鼠标移动
black.x=black.parent.mouseX+point.x;
//限定移动范围
//因为我不确定你的元件是怎么安排坐标的,以下这么写适合所有情况
if (black.transform.pixelBounds.left<powder.transform.pixelBounds.left)
{
black.x+=powder.transform.pixelBounds.left-black.transform.pixelBounds.left;
}
else if (black.transform.pixelBounds.right>powder.transform.pixelBounds.right)
{
black.x-=black.transform.pixelBounds.right-powder.transform.pixelBounds.right;
}
}
}
}
其实按照第一个回答者的方法用startDrag也可以,但是这个方法会导致在某些情况下一不小心按下右键会导致释放左键的效果失效,所以最好的方法还是用事件侦听~
希望能帮到你~
展开全部
startDrag ()
方法
public function startDrag(lockCenter:Boolean = false, bounds:Rectangle = null):void
后面的bounds参数就是它的移动位置的限制,是一个矩形。
var bounds:Rectangle=new Rectangle(0,0,100,1)
Rectangle(x:Number = 0,
y:Number = 0, width:Number = 0, height:Number = 0)
例如mc.startDrag(false,new Rectangle(0,0,100,1).
表示mc这个元件在一个矩形内移动,这个矩形有左上角坐标在(0,0)位置。移动的长度为100,高度为1.
方法
public function startDrag(lockCenter:Boolean = false, bounds:Rectangle = null):void
后面的bounds参数就是它的移动位置的限制,是一个矩形。
var bounds:Rectangle=new Rectangle(0,0,100,1)
Rectangle(x:Number = 0,
y:Number = 0, width:Number = 0, height:Number = 0)
例如mc.startDrag(false,new Rectangle(0,0,100,1).
表示mc这个元件在一个矩形内移动,这个矩形有左上角坐标在(0,0)位置。移动的长度为100,高度为1.
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询