0

Flex モバイル アプリで実行したい AS3 ゲームがいくつかあります。オリジナルのゲームを 1 つのライブラリに入れ、それをモバイル アプリに追加しました。ここまでは順調ですね。

私が得る問題は、ゲームの開始時に、ゲームで指定した StageScaleMode.SHOW_ALL にスケーリングされないことです。

私はこのようにゲームを始めています:

var game:MyGame = new MyGame();
var container:UIComponent = new UIComponent();
addElement(container);
container.addChild(game);               
this.actionBarVisible = false;

mxml のステージに同じスケール オプションを設定しようとしましたが、何も変わりません。

何か案は?

ありがとう。

4

1 に答える 1

1

モバイル デバイスの画面には、さまざまな画面密度、つまり DPI (ドット/インチ) があります。ターゲット デバイスの画面密度に応じて、DPI 値を 160、240、または 320 として指定できます。自動スケーリングを有効にすると、Flex は各デバイスの画面密度に合わせてアプリケーションの表示方法を最適化します。

たとえば、ターゲット DPI 値を 160 に指定し、自動スケーリングを有効にするとします。DPI 値が 320 のデバイスでアプリケーションを実行すると、Flex は自動的にアプリケーションを 2 倍にスケーリングします。つまり、Flex はすべてを 200% 拡大します。

ターゲット DPI 値を指定するには、メイン アプリケーション ファイル内のタグまたはタグの applicationDPI プロパティとして設定します。

<s:ViewNavigatorApplication xmlns:fx="http://ns.adobe.com/mxml/2009" 
xmlns:s="library://ns.adobe.com/flex/spark" 
firstView="views.HomeView" 
applicationDPI="160">

アプリケーションを自動スケーリングしないことを選択した場合は、必要に応じて、レイアウトの密度の変更を手動で処理する必要があります。

デバイスは、さまざまな画面サイズや解像度、さまざまな DPI 値または密度を持つことができます。

解像度は、高さのピクセル数に幅のピクセル数を掛けたものです。つまり、デバイスがサポートするピクセルの総数です。

DPI は、1 平方インチあたりのドット数、つまりデバイスの画面上のピクセル密度です。DPI という用語は、PPI (ピクセル/インチ) と同じ意味で使用されます。

applicationDPI (設定されている場合) は、アプリケーションのターゲット DPI を指定します。Flex は、異なる DPI 値を持つ別のデバイスに適合するように倍率を自動的に適用します。

Capabilities.screenDPI は、現在のデバイスの特定の DPI 値です。

runtimeDPI は Capabilities.screenDPI に似ています。この値は、DPIClassification クラスで定義された定数 (160、240、および 320 DPI) のいずれかに丸められた現在のデバイス DPI です。

現在の画面上のコンポーネントの実際の寸法 (幅と高さ) を知りたい場合は、倍率を次のように操作する必要があります。

var scaleFactor:Number = runtimeDPI / applicationDPI;

var currentComponentSize:int =componentSize.height * scaleFactor;

applicationDPI と runtimeDPI の値にアクセスできない場合は、次のように Capabilities.screenDPI を使用して手動で scaleFactor を計算できます。

   // Copy the applicationDPI setted in your application. ie:
    var _applicationDPI:int = 160;
    var _runtimeDPI:int;

    if(Capabilities.screenDPI < 200)
         _runtimeDPI = 160;
    else if(Capabilities.screenDPI >=200 && Capabilities.screenDPI < 280)
        _runtimeDPI = 240
    else if (Capabilities.screenDPI >=280)
        _runtimeDPI = 320;

    var scaleFactor:Number = _runtimeDPI / _applicationDPI;

    var currentComponentSize:int =componentSize.height * scaleFactor;

http://www.francescoflorio.info/?p=234

于 2013-01-29T10:40:35.087 に答える