2014-01-24 94 views
0

因此,我很難解決這個問題。 我試着去讓在舞臺的右下角的stage.y和stage.y,所以每當我添加了一個這樣的如何使對象位置從左下角開始

 box.x = 100 
     box.y = 100 
     this.addChild(box); 

這將是從舞臺的左下角100像素。

我試着用

 stage.scaleMode = StageScaleMode.NO_SCALE; 
     stage.align = StageAlign.BOTTOM_LEFT; 

但did`nt工作。 我錯過了什麼嗎?

+2

人力資源管理,我可能是錯的,但我不太確定這個對齊屬性是用於這種方式的...... – mitim

+0

嗯,好吧,我在嘗試一段時間後想的是相同的,但是有沒有辦法做到我想要的? – GregorII

+1

StageAlign.BOTTOM_LEFT屬性不適用於在階段wrt中將顯示對象定位到左下角。它用於在整個Flash窗口調整大小時對顯示對象進行定位,即當調整大小時,這些顯示對象將保持在左下角。在任何情況下,x/y定位總是從左上角開始。 – shinobi

回答

2

對於「製作moviecclip並使其註冊點位於左下角?並在此影片剪輯中添加內容」的評論肯定是一種方法。可能是最簡單的第一個想到的方法,可以根據需要輕鬆移動它並更新任何包含的對象。

另一種方法是創建一個點對象和引用來定位所有內容。喜歡的東西:

var origin:Point = new Point(0, this.stage.stageHeight); 

,然後針對你的機器:

box.x = origin.x + 100; 
box.y = origin.y - 100; 

但是,如果你想改變這一點,你必須添加一些代碼,去和更新所有現有的位置對象。


如果你真的堅持對+ Y去向上和-Y在舞臺上向下走,你可以使用一個小技巧,但有可能是一個沉重的開銷心理成本:

使用第一種方法,但在定位在左下角之前給movieclip一個負100的縮放比例注意,現在所有的東西都會顛倒過來,所以你必須處理/考慮那個副作用。不推薦,但是把它扔掉那裏。

+0

不太可能做**點**的事情,看起來簡單明瞭。 10倍 – GregorII

1

你也可以創建一個靜態方法,總是調用它,當你需要的,例如:

public class DisplayObjectUtils 
{ 
    public static function setRegPoint(obj:DisplayObjectContainer, newX:Number, newY:Number):void 
    { 
     var bounds:Rectangle = obj.getBounds(obj.parent); 
     var currentRegX:Number = obj.x - bounds.left; 
     var currentRegY:Number = obj.y - bounds.top; 

     var xOffset:Number = newX - currentRegX; 
     var yOffset:Number = newY - currentRegY; 

     obj.x += xOffset; 
     obj.y += yOffset; 

     var totalChildren:uint = obj.numChildren; 
     for (var i:int = 0; i < totalChildren; i++) 
     { 
      obj.getChildAt(i).x -= xOffset; 
      obj.getChildAt(i).y -= yOffset; 
     } 
     bounds = null; 
    } 
} 

並使用,你可以試試:

//register point in the center of the object //box.width >> 1, box.height >> 1 
DisplayObjectUtils.setRegPoint(box, box.width >> 1, box.height >> 1); 
相關問題