我想我以前做过,但找不到代码。
Flash 与许多其他图形框架一样使用左上角作为坐标原点 (0,0),因为它是底层内存模型的惯例。
但是如果原点在舞台的中心,我的计算会非常简单,因为所有的游戏都围绕中心旋转,并且使用了大量的三角函数、角度等。
Stage::setOrigin( uint, uint );
有没有类似或类似 的内置方法?
我想我以前做过,但找不到代码。
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 处添加您的游戏对象,它们将位于舞台中央。