【问题标题】:Width turns out too much宽度太大了
【发布时间】:2013-05-22 19:43:17
【问题描述】:

我正在尝试构建某种在被调用时重叠的菜单(通过按下菜单按钮)。 由于这将是一个移动应用程序,因此我希望所有度量都具有响应性,因此以百分比而不是像素编写。

我正在尝试制作一个像 Facebook 应用程序那样的菜单幻灯片。

我的解决方案是设置一个宽度为 0% 的侧边菜单。当按下菜单按钮时,菜单将扩大到设备屏幕宽度的 70%,从而覆盖 70% 的宽度。

我一直在尝试通过这样做来解决问题

<fx:Script>
<![CDATA[           
  protected function button1_clickHandler(event:MouseEvent):void {

    trace( stage.fullScreenWidth, stage.fullScreenHeight );             
    trace(meny.width);

    if (meny.width !== 0) {
      meny.width = 0;
    } else {
      meny.width = 0.5*stage.fullScreenWidth;
    }
  }         
]]> 
</fx:Script>

当我调试跟踪显示时,我得到了正确的值。在这种模拟 iPhone 4 的情况下,它给了我:540(宽度)960(高度)和 270(meny.width)。

但是,即使计算正确(270 是 540 的 50%),meny 的宽度也会覆盖屏幕的一半以上,大约 80%~

为什么要这样做,解决方案是什么?调试控制台给了我正确的值,但它并没有工作。 我还在插入的 Android 设备上尝试过同样的问题,所以这不是仿真的问题。

感谢任何解决方案。

【问题讨论】:

  • 您是否在任何父对象上设置 scaleX/Y?你的 stage.scaleMode 设置为 NO_SCALE 了吗?
  • 我没有使用任何 scaleX/Y 也没有使用 'NO_SCALE:String = "noScale"'。我对 AS3 很陌生,上周开始,所以我没有那么有经验。任何用户友好的建议都是一个很好的起点。谢谢
  • 在构造函数中尝试设置:stage.scaleMode = StageScaleMode.NO_SCALE;
  • 我很抱歉,但我对 AS3 的了解非常有限,我不知道您指的是什么。如果你能以某种方式让新人更容易理解,或者向我展示代码的样子,我将永远感激不尽。然后我还可以与全班同学分享解决方案:)
  • 您是否在应用程序类中设置了applicationDPI?如果是这样,您需要在手动设置的代码中考虑 DPI 的变化(iPhone 以 320dpi 运行,默认情况下 applicationDPI 设置为 160)。

标签: actionscript-3 flash apache-flex width percentage


【解决方案1】:

我建议您使用应用程序宽度的大小而不是舞台宽度: menu.width=parentApplication.width

在添加一些全局事件侦听器或使用 StageWebViewStageVideo 之类的东西之前,您不需要处理舞台大小

您可以阅读此articale about mobile apps auto scaling 了解更多详情。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-21
    • 2018-07-29
    • 1970-01-01
    相关资源
    最近更新 更多