我想我以前做過,但找不到代碼。如何使用Actionscript更改Flash的舞臺中的座標原點?
Flash與許多其他圖形框架一樣使用左上角作爲座標原點(0,0),因爲它是根據約定如何使用底層存儲器模型。
但是這將是非常簡單,我的計算,如果起源是在舞臺的中心,因爲所有的遊戲圍繞中心,使用了大量的三角,角度等
有一些內置方法如Stage::setOrigin(uint, uint);
或類似的東西?
我想我以前做過,但找不到代碼。如何使用Actionscript更改Flash的舞臺中的座標原點?
Flash與許多其他圖形框架一樣使用左上角作爲座標原點(0,0),因爲它是根據約定如何使用底層存儲器模型。
但是這將是非常簡單,我的計算,如果起源是在舞臺的中心,因爲所有的遊戲圍繞中心,使用了大量的三角,角度等
有一些內置方法如Stage::setOrigin(uint, uint);
或類似的東西?
創建一個MovieClip或Sprite,並將其作爲根對象(而不是添加到舞臺)添加到stage.width/2,stage.height/2。然後,當你添加你的遊戲對象。在該剪輯的內部0,0處添加您的遊戲對象,並且它們將集中在舞臺上。
創建一個覆蓋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;
}
}
}
獎勵:您可以隨時更改原點值,因此它不必位於舞臺的中心位置。
謝謝,這是一個很好的。儘管我忘了提及我想要使用傳統的2D參考系統,I.E.積極的Y向上指向。我想我只是有轉換功能。 – Petruza 2010-01-18 11:12:43
哈哈。旋轉180度的MovieClip?我認爲你最好習慣閃光是一個怪人;) – typeoneerror 2010-01-18 16:26:52
哈哈我希望旋轉技巧是一個笑話;)事實上,它根本不是怪物,大多數圖形庫和框架使用該座標系,但它更容易將我(幾乎)在學校學到的東西用於普通的笛卡爾系統。 – Petruza 2010-01-18 18:21:03