0

WP8 720pデバイスで実行されるXNAアプリ(WP7またはWP7.5アプリ)は自動的にレターボックス化されるため、480x800のBackBufferサイズは同じままです(互換性のために私は推測します)。

XNA互換性レイヤーにバグがあるように見える場合を除いて、これは問題ありません。TouchPanelは、上部のレターボックスの空白領域のサイズだけずれているタッチ位置を報告します。

これには2つの問題があります。

  1. ユーザーのタッチがオフになっているように見え、ゲームプレイとメニューナビゲーションが困難になります。
  2. 負の方向にオフになっているため、ユーザーは画面の一番下にあるものにまったく触れることができなくなります。

53/2ピクセルのオフセットを考慮に入れて問題を回避してみました(53は、スケーリングされた座標の余分なスペースの合計量です。2で割ると、1つのレターボックスバー(上部にあるバー)だけがずれます)。これはタッチ位置を修正しますが、TouchPanelは内部で負の値を0にクランプするため、ゲームの上部にデッドゾーンがまだあることを意味します(-22から-1は0から22に変換される必要があるためですが、すべての場合負の入力値は0にクランプされ、情報が失われ、負の範囲のすべてが常に22に変換されます)。

誰かがこれに遭遇し、それを回避する方法を見つけましたか?

TouchPanel.DisplayHeight / Widthをデバイスの実際の720p値にリセットしようとしましたが、次のフレーム更新でどういうわけか480x800にリセットされます。

4

3 に答える 3

2

私はこれを機能させました。TouchPanel.DisplayHeightを非常に早い段階で853に設定する必要があります(これらの720pデバイスのいずれかを使用していることが検出された場合)。私はメインのSilverlightページのOnNavigatedToでそれを行います(これは実際にはSL / XNAです)。

次に、すべてのタッチ位置とジェスチャ位置を+ 53.0f/2.0fオフセットする必要があります。

これが以前に機能しなかった理由はわかりません。これは、TouchPanelが800の高さにリセットされ続けたために機能しなかった、上記のソリューションであるためです。

しかし、縮小された再現(新しいSL / XNAアプリ)とメインのゲームアプリの両方で機能するようになりました。

于 2013-01-05T00:00:42.480 に答える
0

これは私がここから見つけた素晴らしい解決策です: http://developer.nokia.com タッチの問題を修正するだけでなく、側面から黒いブロックを削除します。もちろん、プログラムによっては、解像度と画面の比率が変わるため、これによりさらに問題が発生する可能性があります。

if (Environment.OSVersion.Version.Major == 8)
{
    int? scaleFactor = null;
    var content = System.Windows.Application.Current.Host.Content;
    var scaleFactorProperty = content.GetType().GetProperty("ScaleFactor");
    if (scaleFactorProperty != null)
    {
        scaleFactor = scaleFactorProperty.GetValue(content, null) as int?;
    }
    if (scaleFactor == null)
        scaleFactor = 100;

    if (scaleFactor == 150)
    {
        SharedGraphicsDeviceManager sdm = SharedGraphicsDeviceManager.Current;

        sdm.PreferredBackBufferHeight = 800;
        sdm.PreferredBackBufferWidth = 450;

        TouchPanel.DisplayHeight = 800;
        TouchPanel.DisplayWidth = 450;
    }
}
于 2014-05-04T14:02:00.773 に答える
0

私は数日前にゲームに取り組んでいました。7.1 用にパッケージ化されていましたが、720p エミュレーターでは問題なく動作しました。

互換性レイヤーについてはよくわかりません。画像のサイズによって影響を受ける場合は、次のようになります。WVGA、WXGA、および 720p 用に個別の画像を作成しました。それらを使用し、レターボックスについて知り、すべてに 720p 画像を使用することにしました。

おそらく役に立ちませんが、とにかくそこに行きます。

于 2013-01-04T23:42:51.503 に答える