ActionScript 3.0でフルスクリーンが許可されているかどうかを検出しますか?
-
20-08-2019 - |
質問
allowfullscreenパラメータがfalseの場合、フルスクリーンボタンを削除したい。
<!> nbsp; <!> nbsp; <!> nbsp; <!> nbsp; <!> nbsp; <!> nbsp; param value="true" name="allowfullscreen"
その値を検出できるかどうかは誰にもわかりませんか? loaderInfo.parametersの他のflashvarsには付属していません。
解決
編集:これは現在廃止されています(FP 8.5 / 9のハックでした)
次は、プレーヤーがフルスクリーンで利用可能かどうかを検出します(thx @mrdoob):
var hasFullscreen:Boolean = (stage.hasOwnProperty("displayState"))
他のヒント
必要なメンバーは
stage.displayState
次のように割り当てることができます:
import flash.display.StageDisplayState;
....
stage.displayState = StageDisplayState.FULL_SCREEN;
stage.displayState = StageDisplayState.NORMAL;
読むことをお勧めします:
[編集:
ああ、あなたの質問を完全に読み間違えました。]
少しテストした後、例外メカニズムを使用して、知覚可能なちらつきなしにテストできるように見えます:
try
{
stage.displayState = StageDisplayState.FULL_SCREEN;
stage.displayState = StageDisplayState.NORMAL;
} catch ( error:SecurityError ) {
// your hide button code
}
AS3のソリューション
ステージプロパティを介してフルスクリーンが許可されているかどうかを確認できます。私の場合の例
try {
if (btn.stage["allowsFullScreen"]) { // if this fails, then its not allowed
// do full screen allow code here
btn.alpha = 1; // show since its allowed
}
} catch (error:Error) { // full scrren not allowed
btn.alpha = 0.5; // dim since it cant be used
}
埋め込みのallowfullscreenがfalse / trueに設定されているかどうかは検出できません。
残念ながら、ユーザーがボタンをクリックして最終的なエラーをキャッチし、それによってボタンを無効にするまで待つ必要があります。
それでも...非常に特別なコンテキストで、flashplayerがこの値自体をおそらくあなたが編集したことを評価するよう要求する必要があります。埋め込みがフルスクリーンモードを許可するかどうかを決定できる必要があるサードパーティによって処理される場合。この場合、追加のflash-varを追加するだけです(例:fullscreenButton = false)。
実際には、ドキュメントは、ActionScript 3でフルスクリーンモードが許可されているかどうかをどのように検出できるかについて不明です。
彼らが言及しているのは、フルスクリーンモードに切り替えようとしても許可されていない場合、例外が発生するということです。これにより、全画面モードボタンを簡単に非表示または表示できなくなります。
方法はありますが、<!> quot; livedocs <!> quot;不完全または短いことで有名です。
<!> quot; fullscreen <!> quot;を読むことができるかもしれません。ルートオブジェクトのパラメーターを次のように見て、デフォルトでfalseになっているparamの値:
var keyStr:String;
var valueStr:String;
var paramObj:Object = LoaderInfo(this.root.loaderInfo).parameters;
for (keyStr in paramObj) {
valueStr = String(paramObj[keyStr]);
//do something with this information
}
編集:flashvarsには戻らないことに注意してください。
私が考えることができる唯一の方法は、ExternalInterfaceを介してJavaScript関数を呼び出すことです。 JavaScriptからFlash埋め込みパラメーターを簡単に読み取ることができますが、ムービーが埋め込まれているHTMLにJSを挿入できれば、それが何であるかを調べるのではなく、パラメーターを変更した方がよいと考えています。
それ以外では、stage.displayState = StageDisplayState.FULL_SCREEN;
はユーザーイベントによってのみトリガーできるという事実は別として、Jothamのソリューションは問題ないようです。
全画面モードは、ユーザーがマウスをクリックするかキーを押すと開始されます。ムービーは、ユーザー入力なしでStage.displayStateを変更できません。 ( http://help.adobe.com /en_US/AS3LCR/Flash_10.0/flash/display/Stage.html#displayState )
押すとJothamのコードを実行する2番目のボタンが必要です。ログインボタン、またはユーザーがとにかく押す他のボタンを探します。
残念ながら、上記の投稿は機能しません。次のSWF:
package {
import flash.display.Sprite;
import flash.display.StageDisplayState;
import flash.events.Event;
import flash.events.MouseEvent;
public class Tester extends Sprite {
public function Tester() {
trace("Display States: Full="+StageDisplayState.FULL_SCREEN+"; Normal="+StageDisplayState.NORMAL);
trace( "- Display State? "+stage.displayState);
trace( "- Full Screen Enabled? "+(stage.hasOwnProperty("displayState")) );
stage.addEventListener( MouseEvent.CLICK, function(evt:Event=null):void {
trace("Attempting to change to FullScreen...");
try {
stage.displayState = StageDisplayState.FULL_SCREEN;
trace("Success!");
stage.displayState = StageDisplayState.NORMAL;
} catch(e:*) {
trace("Fail! "+e);
}
});
}
}
}
FullScreenが無効になっている場合にトレースします:
Display States: Full=fullScreen; Normal=normal
- Display State? normal
- Full Screen Enabled? true
Attempting to change to FullScreen...
Fail! SecurityError: Error #2152: Full screen mode is not allowed.
問題はFull Screen Enabled? true
部分です。
私は、この機能を試聴してこの機能を確認できると信じています
_root.stage.addEventListener(FullScreenEvent.FULL_SCREEN, onFullScreenListenter);
タイトなセキュリティセットのホストでフルスクリーンモードを許可しようとするテストでは、null例外が返されます。 FullScreenEventが存在しないためだと思います。