我有一个图像网格,它们被添加到类中的imagecontainer(Sprite)中。 当我单击一个按钮时,imagecontainer被补间(缩放)为0.2 现在我想开始拖动图像。在鼠标按下时我添加了一个enterFrame事件:
function onEnterFrame(e:Event):void
{
imagecontainer.image.x = this.mouseX;
imagecontainer.image.y = this.mouseY;
}
不幸的是,图像永远不会出现在鼠标位置上,但是鼠标指针的偏移量增加/减少。 替代方案,startDrag / stopDrag完美地工作,但我仍然需要mouseX / mouseY将图像放在网格上... 我也尝试过parent.mouseX,没有运气。 为什么会这样?我认为mouseX / mouseY始终取决于舞台维度。
答案 0 :(得分:3)
你试过了吗?
function onEnterFrame(e:Event):void
{
imagecontainer.image.x = stage.mouseX;
imagecontainer.image.y = stage.mouseY;
}
答案 1 :(得分:1)
如果您希望相对于mouseX
上的鼠标位置获取mouseY
和stage
,那么为什么不使用:
stage.mouseX,
stage.mouseY
此外,如果您扩展某些内容(比方说,总大小为200%),那么舞台上50像素实际上是已缩放的容器中的25像素。
将此作为文档类使用,以了解我的意思:
package
{
import flash.display.MovieClip;
import flash.events.Event;
public class Main extends MovieClip
{
private var _box:MovieClip;
public function Main()
{
addEventListener(Event.ENTER_FRAME, _move);
_box = new MovieClip();
_box.scaleX = _box.scaleY = 2;
addChild(_box);
}
private function _move(e:Event):void
{
trace("stage: " + stage.mouseX + ", " + stage.mouseY);
trace("box: " + _box.mouseX + ", " + _box.mouseY);
}
}
}
答案 2 :(得分:0)
如果你还在寻找这个,也许你可以使用startDrag();和stopDrag(); 用于拖动图像。
像这样: image.addEventListener(MouseEvent.MOUSE_DOWN, onMouseDownMC);
image.addEventListener(MouseEvent.MOUSE_UP, onMouseUpMC);
function onMouseDownMC(e:MouseEvent):void
{
e.currentTarget.startDrag(true);
}
function onMouseUpMC(e:MouseEvent):void
{
e.currentTarget.stopDrag();
}
更新:您可以设置这样的ur函数:
image.addEventListener(MouseEvent.MOUSE_DOWN, onMouseMC);
image.addEventListener(MouseEvent.MOUSE_UP, onMouseMC);
function onMouseMC(e:MouseEvent):void
{
var type = e.type;
if(type == MouseEvent.MOUSE_DOWN) /// u can use "mouseDown" accept MouseEvent.MOUSE_DOWN
{
e.currentTarget.startDrag(true);// if you set true its gonna drag the obj from center
}
else if(type == MouseEvent.MOUSE_UP)
{
e.currentTarget.stopDrag(); //u can use "mouseUp" accept MouseEvent.MOUSE_UP
}
}