[英]How to change the coordinate origin in Flash's stage with Actionscript?
我想我以前做過,但是找不到代碼。
Flash和其他許多圖形框架一樣,使用左上角作為坐標原點(0,0),因為這是常規內存模型的方式。
但是,如果原點位於舞台中央,對於我的計算而言,這真的會更簡單,因為所有游戲都圍繞該中心旋轉,並使用大量的三角函數,角度等。
是否有一些內置方法,例如Stage::setOrigin( uint, uint );
或類似的東西?
創建一個覆蓋x和y setter和getter的類以處理計算。 舞台上的任何MovieClips都應擴展此新類。
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;
}
}
}
獎勵:您可以隨時更改原點值,因此它不必位於舞台的中心。
創建一個MovieClip或Sprite,並將其作為根對象(而不是添加到舞台)添加到stage.width / 2,stage.height / 2處。 然后,當您向其中添加游戲對象時。 將游戲對象添加到該剪輯內的0,0處,它們將在舞台上居中。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.