我想我之前做过这个但是找不到代码。
Flash尽可能多的其他图形框架使用左上角作为坐标原点(0,0),因为它是底层内存模型的惯例。
但如果原点位于舞台的中心,那么我的计算会非常简单,因为所有游戏围绕中心旋转并使用大量的三角,角度等。
是否有一些像Stage::setOrigin( uint, uint );
这样的内置方法?
答案 0 :(得分:3)
创建一个覆盖x和y setter和getter来处理计算的类。舞台上的任何MovieClip都应该扩展这个新类。
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;
}
}
}
奖励:您可以随时更改原点值,因此不必位于舞台的中心。
答案 1 :(得分:2)
创建一个MovieClip或Sprite,并将其作为根对象添加到舞台上(而不是添加到舞台上)stage.width / 2,stage.height / 2。然后,当您将游戏对象添加到该对象时。将游戏对象添加到该剪辑内部的0,0处,它们将在舞台上居中。