编辑:另请参阅 Stackoverflow 上的下一个问题: Flash builder Mobile AS3 项目:屏幕 DPI、应用程序 DPI、图像 DPI、中心图像
它与DPI设置有关......
我想将 DisplayObject 居中到屏幕的中心。这是从资源动态创建的图像。创建对象后,我使用以下代码将其居中:
public function showProgress(bValue : Boolean = true):void
{
this.imgProgress.visible = bValue;
if( bValue )
{
this.imgProgress.x = (this.stage.stageWidth - this.imgProgress.width) * 0.5;
}
}
对我来说看起来很简单,但对象仍然不在中心。例如:
this.stage.stageWidth == 500;
this.imgProgress.width == 480;
Result is: 10px; (this.imgProgress.x) /* 10px is correct */
我尝试了几件事,也使用 localToGlobal 和 GlobalToLocal 但得到了不可预测的结果,仍然没有居中。
我认为它与屏幕dpi或其他什么有关?但是 Capabilities.screenDPI 返回奇怪的结果。例如,作为 iPhone 3GS 运行,它返回 163dpi。
如何计算正确的中心位置?
编辑:一些额外的信息:
public class Main extends Sprite
{
// setup stage
this.stage.color = 0;
this.stage.align = StageAlign.TOP_LEFT;
this.stage.scaleMode = StageScaleMode.NO_SCALE;
imgProgress 是 this.stage 的孩子