2013-03-07 77 views
0

我正在尝试使用ActionScript 3在Flash Pro中的特定设备屏幕中为用户交互制作原型。需要在设备屏幕的实际维度中测试此用户交互原型。测试将使用普通PC执行,但不是特定的,因此问题是如何在原型电影中将真实尺寸设置为设备屏幕,以及如何针对任何可能的显示器屏幕尺寸和分辨率控制和保持尺寸(一个确切的现实世界屏幕尺寸的复制品)。实际大小在ActionScript 3

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

我试图用这个方法,但我没有本事lvel正确地运用它:

this.addEventListener(Event.ENTER_FRAME,loop) 

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

} 

感谢所有你们提前!

回答

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; 
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),唯一的可能性是错误的。

+0

我刚测试过这个,它仍然有效。我唯一注意到的问题是,Flash报告** main **屏幕的screenDPI,而不是它必须运行的屏幕。因此,对于我来说,我运行的是一台配有双23“1080p显示器的系统,但它将我的16”1080p笔记本显示器作为DPI进行读取,因此当您使用标尺测量时,该显示器已关闭。如果你在主屏幕上测试它,*它确实有效* – 2013-03-07 21:17:03