0

我正在尝试使用 ActionScript 3 在 Flash Pro 中的特定设备屏幕中为用户交互制作原型。需要在设备屏幕的真实尺寸中测试此用户交互原型。测试将使用普通电脑执行,但没有具体的,所以问题是如何在原型电影中设置设备屏幕的真实尺寸以及如何控制和保持其尺寸以适应任何可能的显示器屏幕尺寸和分辨率(一个真实世界屏幕尺寸的精确复制品)。

换句话说:屏幕尺寸是 2 x 1 英寸,我需要在原型中保留这些尺寸。

我试图使用这种方法,但我没有正确应用它的技能水平:

    this.addEventListener(Event.ENTER_FRAME,loop)

function loop(e:Event):void
{
trace(stage.stageWidth)

}

提前感谢你们所有人!

4

2 回答 2

1

利用:

stage.addEventListener(Event.RESIZE, onStageResized, false, 0, true);
//and handler
protected function onStageResized(e:Event=null):void
{
    //here code to do something with size change
}

还值得注意的是,您必须设置舞台以不调整大小,例如通过网页

        stage.align = StageAlign.TOP_LEFT;
        stage.scaleMode = StageScaleMode.NO_SCALE;
于 2013-03-07T14:51:45.943 回答
0

实际上,我大约在一年前创建了一个原型应用程序,用于在移动设备上执行此操作。我使用了 Flex,但你可以通过这个计算出所有的数学。这是为移动设备制作的,但我认为这不应该在桌面屏幕上工作。

<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" 
               xmlns:s="library://ns.adobe.com/flex/spark">
    <fx:Declarations>
        <fx:Number id="spacing">5</fx:Number>
    </fx:Declarations>
    <s:Rect id="rectangle" width="{this.sliderWidth.value}" height="{this.sliderHeight.value}" x="{this.spacing}" y="{this.spacing}">
        <s:fill>
            <s:SolidColor color="#ff000f"/>
        </s:fill>
    </s:Rect>
    <s:VGroup bottom="10" width="100%" 
              horizontalAlign="center" gap="20" 
              left="{this.spacing * 2}" right="{this.spacing * 2}" 
              maxWidth="{this.width - 4 * this.spacing}">
        <s:Label id="measurements" opaqueBackground="#ffffff" 
                 text="
                 Box: {(this.rectangle.width/Capabilities.screenDPI).toFixed(2)}in x {(this.rectangle.height/Capabilities.screenDPI).toFixed(2)}in — 
                 {this.rectangle.width}px x {this.rectangle.height}px" 
                 textAlign="center" />

        <s:Label id="screenStats" opaqueBackground="#ffffff" 
                 text="
                 Screen  DPI: {Capabilities.screenDPI} — 
                 Resolution: {Capabilities.screenResolutionX}x{Capabilities.screenResolutionY} — 
                 Size: {(Capabilities.screenResolutionX / Capabilities.screenDPI).toFixed(2)}in x {(Capabilities.screenResolutionY / Capabilities.screenDPI).toFixed(2)}in" 
                 maxWidth="{this.width - 4 * this.spacing}"/>
        <s:HGroup width="100%" horizontalAlign="center" verticalAlign="middle">
            <s:Label text="Width:" opaqueBackground="#ffffff"/>
            <s:HSlider id="sliderWidth" width="100%" height="5%" 
                       maximum="{this.width - 2 * this.spacing}" minimum="{this.spacing}" 
                       value="50" />
        </s:HGroup>
        <s:HGroup width="100%" horizontalAlign="center" verticalAlign="middle">
            <s:Label text="Height:" opaqueBackground="#ffffff"/>
            <s:HSlider id="sliderHeight" width="100%" height="5%" 
                       maximum="{this.height - 2 * this.spacing}" minimum="{this.spacing}" 
                       value="50"/>
        </s:HGroup>
    </s:VGroup>

</s:Application>

我强烈建议将其放入一个快速的 Flex 项目中并运行它。基本上,它允许您在舞台上放置一个红色矩形,并将其调整为像素尺寸,然后在屏幕上输出真实尺寸。自从我构建它以来,我还没有测试过它,但它在我的 Nexus 7 和 iPad 3 上总是很有效,而且非常准确。这可能是错误的唯一可能性是设备报告不正确screenDPI的 ,Flash 偶尔会这样做(例如,iPad 3 有一段时间的 DPI 不正确)。

于 2013-03-07T20:07:35.593 回答