0

编辑:另请参阅 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 的孩子

4

1 回答 1

0

它与纵横比有关(计算后您可以正确居中)

另请参阅: 在 AS3 移动应用程序中设置 ApplicationDPI

于 2012-05-30T12:40:36.003 回答