allowfullscreen パラメータが false の場合、フルスクリーン ボタンを削除したいと思います。
param value="true" name="allowfullscreen"
その値を検出できるかどうかは誰にもわかりませんか? loaderInfo.parameters の他の flashvars には付属していません。
allowfullscreen パラメータが false の場合、フルスクリーン ボタンを削除したいと思います。
param value="true" name="allowfullscreen"
その値を検出できるかどうかは誰にもわかりませんか? loaderInfo.parameters の他の flashvars には付属していません。
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
}
欲しいメンバーは
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
}
実際、ドキュメントでは、ActionScript3でフルスクリーンモードが許可されているかどうかを検出する方法が明確ではありません。
彼らが言及している唯一のことは、フルスクリーンモードに切り替えようとしてそれが許可されていない場合、例外が発生し、それをキャッチできるということです。これでは、フルスクリーンモードボタンを簡単に非表示または表示することはできません。
方法はあるかもしれませんが、「livedocs」は不完全または簡潔なことで有名です。
ルートオブジェクトのパラメータを次のように確認することで、デフォルトでfalseに設定されている「フルスクリーン」パラメータの値を読み取ることができる場合があります。
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に戻ってこないことに気づきました。
埋め込みの allowfullscreen が false/true に設定されているかどうかは検出できません。
残念ながら、ユーザーがボタンをクリックして最終的なエラーをキャッチし、それによってボタンを無効にするまで待つ必要があります。
それでも...おそらく編集したため、この値自体をflashplayerに評価させるには、非常に特別なコンテキストにいる必要があります。フルスクリーンモードを許可するかどうかを決定できる必要があるサードパーティによって埋め込みが処理される場合。その場合は、flash-var を追加するだけです (例: fullscreenButton=false)。
私が考えることができる唯一の方法は、ExternalInterface を介して JavaScript 関数を呼び出すことです。Flash の埋め込みパラメータは JavaScript から簡単に読み取ることができますが、ムービーが埋め込まれている 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 が存在しないためだと思います。