2010-01-16 88 views
0

我想我以前做過,但找不到代碼。如何使用Actionscript更改Flash的舞臺中的座標原點?

Flash與許多其他圖形框架一樣使用左上角作爲座標原點(0,0),因爲它是根據約定如何使用底層存儲器模型。

但是這將是非常簡單,我的計算,如果起源是在舞臺的中心,因爲所有的遊戲圍繞中心,使用了大量的三角,角度等

有一些內置方法如Stage::setOrigin(uint, uint);或類似的東西?

回答

2

創建一個MovieClip或Sprite,並將其作爲根對象(而不是添加到舞臺)添加到stage.width/2,stage.height/2。然後,當你添加你的遊戲對象。在該剪輯的內部0,0處添加您的遊戲對象,並且它們將集中在舞臺上。

+0

謝謝,這是一個很好的。儘管我忘了提及我想要使用傳統的2D參考系統,I.E.積極的Y向上指向。我想我只是有轉換功能。 – Petruza 2010-01-18 11:12:43

+0

哈哈。旋轉180度的MovieClip?我認爲你最好習慣閃光是一個怪人;) – typeoneerror 2010-01-18 16:26:52

+0

哈哈我希望旋轉技巧是一個笑話;)事實上,它根本不是怪物,大多數圖形庫和框架使用該座標系,但它更容易將我(幾乎)在學校學到的東西用於普通的笛卡爾系統。 – Petruza 2010-01-18 18:21:03

3

創建一個覆蓋x和y設置器和getter來處理計算的類。舞臺上的任何影片剪輯都應該擴展這個新類。

package { 
    // imports 

    public class MyDisplayObject extends DisplayObject 
    { 

     private var originX:Number = 0; 
     private var originY:Number = 0; 

     public function MyDisplayObject() { 
      // constructor stuff 
      originX = stage.stageWidth/2; 
      originY = stage.stageHeight/2; 
     } 

     override public function set x($x:Number):Void { 
      super.x = originX + $x; // use super to avoid these setters and getters 
     } 

     override public function set y($y:Number):Void { 
      super.y = originY + $y; 
     } 

     override public function get x():Number { 
      return super.x - originX; 
     } 

     override public function get y():Number { 
      return super.y - originY; 
     } 
    } 
} 

獎勵:您可以隨時更改原點值,因此它不必位於舞臺的中心位置。