3

我有一个图像网格,它们被添加到类中的图像容器(Sprite)中。当我单击一个按钮时,图像容器被补间(缩放)到 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 总是取决于舞台尺寸。

4

3 回答 3

4

你有没有尝试过:

function onEnterFrame(e:Event):void
{
  imagecontainer.image.x = stage.mouseX;
  imagecontainer.image.y = stage.mouseY;

}
于 2011-05-25T23:56:28.977 回答
2

如果你想获得相对于鼠标位置的和,mouseX那么你为什么不使用:mouseYstage

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);
        }
    }
}
于 2011-05-26T00:10:16.173 回答
1

如果您仍在寻找这个,也许您可​​以使用 startDrag(); 和停止拖动();用于拖动图像。

像这样:

    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();
    }

更新:您可以像这样设置您的功能:

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
    }
}
于 2016-01-09T12:39:39.003 回答