わかりました、私は現在 iOS 用の Flex Mobile プロジェクトを構築しています。ANE (Native Extension) を使った動画プレーヤーのプロトタイプです。ビデオ プレーヤーは、後でもっと大きなプロジェクトで使用されます。
現在、私が抱えている問題はサイジングとポジショニングです。この問題は、プロジェクトの applicationDPI を 160 に設定しているためだと思います。
これが何が起こっているかです。基本的に、ANE は、多くの追加機能が組み込まれ、GUI を提供しない (StageWebView を使用することの主な利点) を備えた、美化された StageWebView です。このアイテムは、StageWebView のようなグローバル スペースに配置されます。何を試しても、正しい位置とサイズにすることができません。これは、本質的に、プレーヤーのサイズと配置を担当するものです
this.height = 50% of stage
this.width = 50% of stage
this.globalPoint:Point = this.localToGlobal(new Point(0,0));
this.viewPort = new Rectangle (this.globalPoint.x,this.globalPoint.y,this.width,this.height - 35); //35 = height of controls
this.videoPlayer = new VideoPlayer(this.stage,this.viewPort); //VideoPlayer(stage:Stage,viewPort:Rectangle)
今、私の頭の中では、これは完璧に見えました。表示リストにはありませんが、エンド ユーザーにはそのように見えます。親クラスの 0,0 に固定されたままになり (もちろん、Resize 関数の助けを借りて)、ビデオは適切な領域のサイズになります。
私は間違っていた。私の Retina iPad では、かなり離れた場所に配置され、サイズがはるかに大きくなりました。大量のデータを収集して計算を行った後、4/3 という定数を見つけました。iPad の DPI の変更は 3/2 (160 -> 240) であるため、それは問題ではないと思います。
また、DPI シフトを補正するためのこの簡単な方程式も思いつきました。
newValue = (oldValue / (DeviceManager.applicationDPI / FlexGlobals.topLevelApplication.applicationDPI) ); //DeviceManager.applicationDPI is a static getter that returns either 160, 240, or 320 based on Adobe's predefined ranges
iPad 1/2 や iPhone でこれをまだテストしていませんが、私の魔法の定数は、実際にはアスペクト比だけが考慮されているのではないかと心配しています。
ポジショニングがすべて台無しになっている理由を誰かが知っていますか? 機能するはずの値を手動で入力しても災害につながるため、これは localToGlobal ではありません。