2009-11-09 30 views
0

我寫了一個簡單的示例,它添加了一個畫布並繪製了一個矩形,其中筆劃大小爲20的縮放模式無。LineScaleMode.NONE上的getBounds()錯誤

問題是,如果我第一次撥打getBounds(),我會得到一個正確的結果,但在撥打scale();後,getBounds()函數會給我一個錯誤的結果。

它會考慮中風,但中風的縮尺模式爲無,屏幕上沒有任何反應,但結果是我的x值會變小。 Sombody可以告訴我如何解決這個問題?

protected var display :Canvas; 

    protected function addCanvas():void 
    {    
     display = new Canvas(); 
     display.x = display.y = 50; 
     display.width = 100; 
     display.height = 100; 

     display.graphics.clear(); 
     display.graphics.lineStyle(20, 0x000000, 0.5, true, LineScaleMode.NONE); 
     display.graphics.beginFill(0xff0000, 1); 
     display.graphics.drawRect(0, 0, 100, 100); 
     display.graphics.endFill(); 

     area.addChild(display); 
     traceBounce(); 
    } 

    protected function scale():void 
    { 
     var m :Matrix = display.transform.matrix; 
     var apply :Matrix = new Matrix(); 
     apply.scale(2, 1); 
     apply.concat(m); 

     display.transform.matrix = apply; 
     traceBounce(); 
    } 

    protected function traceBounce():void 
    { 
     trace(display.getBounds(this)); 
    } 

回答

0

設置寬度/高度並縮放相同的顯示對象可能會產生令人困惑的結果。你的Canvas類是否執行任何異常(例如,設置scrollRect或添加掩碼)?

此外,您可以嘗試獲取畫布父項的界限,或者在畫布上設置cacheAsBitmap並查看是否有幫助?

+0

該示例非常簡單,如果您將畫布置於20,20處並帶有邊框,並開始縮放畫布的X位置,如果追蹤getBounds但getRect不會相同,例如您將看到相同的結果請檢查我的示例並添加以下內容: Alexandru 2009-11-23 10:02:32