动作中的实际大小3

时间:2013-03-07 14:33:11

标签: actionscript-3 object size controls screen

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

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

我试图使用这种方法,但我没有适当的技巧:

    this.addEventListener(Event.ENTER_FRAME,loop)

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

}

感谢你们所有人提前!

2 个答案:

答案 0 :(得分: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;

答案 1 :(得分: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)。