2009-08-21 45 views
1

我遇到過這種很奇怪的情況,我有這樣的吧,我的addEventListener它,所以當 酒吧的點擊,跟蹤localXAS3的MouseEvent localX怪怪

private function _barClicked($e:MouseEvent):void { 
     trace($e.localX) 
} 

奇怪的是,在點擊時同樣的地方,有時它會跳轉到一個錯誤的號碼 ,我不明白爲什麼,我跟蹤了酒吧的寬度,這是正確的值,localX是 只給我隨機數。有沒有人遇到過這個問題?謝謝!

回答

6

嗯,怪

我試過一個簡單的場景,我有一個長方形名爲「酒吧」貼監聽click事件,然後試圖將MOUSE_DOWN事件。兩者都很好。 我沒有得到隨機值。

我的猜測是你的吧剪輯包含其他對象中,你可能會得到酒吧的孩子值,而不是欄本身。不確定,但這只是一個猜測。

你可以嘗試,以確保您的值來自$ e.currentTarget作爲e.target $可能的變化取決於:您的剪輯有多少孩子其持有的點擊事件階段的位置。

嘗試

private function _barClicked($e:MouseEvent):void { 
     trace($e.currentTarget.mouseX); 
} 

希望它能幫助!上述

+4

我遇到了這種情況,這正是喬治指出的原因。但是,一位同事指出,鼠標位置可能在事件發生的時間和在currentTarget上查詢mouseX的時間之間移動。因此,在需要知道事件發生的確切位置的情況下,最好使用e.currentTarget.globalToLocal(new Point(e.stageX,e.stageY))來計算本地座標。 – 2009-12-09 16:39:57

2

我有同樣的問題,並Kevin Condon從註釋解決方案幫助我的問題。我只是在這裏發佈,因爲我幾乎在評論中錯過了它。

private function _barClicked($e:MouseEvent):void { 
    var coord:Point = $e.currentTarget.globalToLocal(new Point($e.stageX, $e.stageY)); 
    trace(coord.x); 
} 

謝謝凱文。

2

只是想記下這個問題的變化,對於那些以上不工作的人。

我有同樣的問題 - localX顯示奇數值。礦井並不是隨機的,遠低於我的預期。也就是說,點擊精靈的最右側,只得到17.2,事件雖然寬度報告爲160.

我發現的是,我的實例是一個縮放版本的符號,它的原生寬度要小得多。

一旦我把它使得符號和實例有同樣的寬度,我開始正確的價值觀。

希望這可以幫助別人。

1

如果發現,只要我使用,在不同的符號之間縮放Kevin Condon提出的差異考慮在內,一切工作了罰款的解決方案。