2011-05-25 24 views
3

我有一個圖像的網格添加到一個類的imagecontainer(雪碧)。 當我點擊一個按鈕,imagecontainer得到補間(縮放)到0.2 現在我想開始拖動圖像。在鼠標按下我添加enterFrame事件:mouseX/Y混淆時拖動一個容器的孩子

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

} 

不幸的是,圖像是從來沒有在mouseposition但有一個增加/減少偏移鼠標指針。 另一種方法,startDrag/stopDrag完美地工作,但我仍然需要鼠標X /鼠標Y將圖像放在網格上... 我也試過parent.mouseX,沒有運氣。 這是怎麼回事?我認爲mouseX/mouseY總是取決於舞臺維度。

回答

3

你嘗試過:

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

} 
+0

JEP我試過了,其實我只是發現了:在enterFrame事件,事件監聽連接到的圖像,所以我可以說:e.target.x = e.target.parent.mouseX - e.target.mouseX,現在不要爲什麼,但它的工作原理... – algro 2011-05-26 00:00:28

+0

它的工作原理是因爲e.target擁有任何對象正在偵聽事件。很高興你想出來了。 – locrizak 2011-05-26 00:09:46

1

如果你想獲得mouseXmouseY相對於在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); 
     } 
    } 
} 
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(); 
    } 

更新:您可以設置烏爾功能是這樣的:

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 
    } 
}