0

我正在尝试使用 as3 中的空气将我的 mc 设置为 iPhone 上的确切屏幕尺寸。

我累了:

import flash.display.Screen;
import flash.geom.Rectangle;

var mainScreen:Screen = Screen.mainScreen;
var screenBounds:Rectangle = mainScreen.bounds;

/// Does not work - comes out 320 by 480
w.text = ""+screenBounds.width+"";
h.text = ""+screenBounds.height+"";
BG.height = screenBounds.height;
BG.width = screenBounds.width;

/// Does not work - comes out 320 by 480
w.text = ""+Capabilities.screenResolutionX+"";
h.text = ""+Capabilities.screenResolutionY+"";
BG.height = Capabilities.screenResolutionY;
BG.width = Capabilities.screenResolutionX;

/// Does not work - comes out 320 by 480
w.text = ""+stage.fullScreenwidth+"";
h.text = ""+stage.fullScreenHeight+"";
BG.height = stage.fullScreenHeight;
BG.width = stage.fullScreenWidth;


/// Works BUT... it does NOT stretch to fit the stage.
/// I am starting with android screen size and it shrinks it proportionally
/// which means there is space on top or bottom or left side.
w.text = ""+stage.stageWidth+"";
h.text = ""+stage.stageHeight+"";
BG.height = stage.stageHeight;
BG.width= stage.stageWidth;
4

4 回答 4

1

您可以尝试使用 stage.scaleMode :

stage.scaleMode = StageScaleMode.SHOW_ALL;

或者

stage.scaleMode = StageScaleMode.EXACT_FIT;
于 2012-09-14T20:26:15.807 回答
1

如果它是 320x480 的,而你说那是错误的,我可以假设你使用的是 iPhone 4S 吗?如果是这样,请进入 App Descriptor XML 文件。在底部(通常是文件中的最后一项),应该有这一行。

<requestedDisplayResolution>standard</requestedDisplayResolution>

如果它被注释掉或设置为“标准”,这将是你的问题。将其更改为“高”,这将启用 Retina 支持。“标准”可放大非视网膜显示屏(iPhone 上为 320x480,iPad 上为 1024x768)。“高”将为您提供正确的显示分辨率。

于 2012-09-15T00:15:57.970 回答
1

这里有一个详细的解释:

http://www.adobe.com/devnet/air/articles/multiple-screen-sizes.html

于 2012-11-10T11:47:47.207 回答
1

如果其他人在获取 ios 的屏幕分辨率时遇到问题。发生的事情是在完成加载的 swf 和调用屏幕大小的时间之间没有足够的时间。

对于我的应用程序,我需要没有比例的 swf,因为我通过设置屏幕大小的相对值(百分比)来设置所有剪辑的大小和位置。

如果我的舞台是 800x1280 并且我有一个高度 = 100、宽度 = 100 的剪辑;

然后是一样的说我的 clips.height = int(stage.stageWidth * 0.125); 为 100 * 100 / 800 = 12.5;| 100 是 800 的 12.5%;

诀窍是对于您的第一帧(如果您使用的是闪光灯)

只需设置舞台规模并等待 swf 满载,仅此而已。

stage.align = StageAlign.TOP_LEFT;
stage.scaleMode = StageScaleMode.NO_SCALE;

var loadTimer:Timer = new Timer(10);
    loadTimer.addEventListener(TimerEvent.TIMER, loading);
    loadTimer.start();

function loading(evt){
    if(root.loaderInfo.bytesLoaded == root.loaderInfo.bytesTotal){
        loadTimer.stop();
        loadTimer.removeEventListener(TimerEvent.TIMER, loading);
        gotoAndPlay(2); 
        }
    }

然后在第 2 帧中,您可以调用 stage.stageWidth ,它会为您提供真实大小,因为您有足够的时间让应用程序获得该值。

var stageW:int = stage.stageWidth;
var stageH:int = stage.stageHeight;

我希望它可以帮助,谢谢

于 2015-07-06T17:10:59.610 回答