2009-03-18 15 views

答えて

-3

EDITは:これは廃止されましたが(ためのハックだったFP 8.5/9)

あなたのプレイヤーが(THXの@mrdoob)フルスクリーン可用性を持っている場合は、以下を検出します:悲しいこと

var hasFullscreen:Boolean = (stage.hasOwnProperty("displayState")) 
+0

このソリューションは、allowFullScreen = falseの場合でもdisplayStateプロパティを常に使用できるため、Flash 10.0でテストされているため、機能しません。 – sixones

+0

2年前に投稿されましたが、プレーヤーのバージョンがこの機能を実際にサポートしているかどうかを検出するのが問題でしたが... kthx –

2

したいメンバーはそれはとてもように割り当てることができ

stage.displayState 

です:

import flash.display.StageDisplayState; 

.... 

stage.displayState = StageDisplayState.FULL_SCREEN; 
stage.displayState = StageDisplayState.NORMAL; 

は私が読書をお勧めします。

http://livedocs.adobe.com/flash/9.0/main/wwhelp/wwhimpl/common/html/wwhelp.htm?context=LiveDocs_Parts&file=00000352.html

[編集:

男ああ、完全にあなたの質問を読み違え]

をあなただけの任意の知覚可能なちらつきなしでそれをテストするために例外メカニズムを使用することができますように見える少し試験後:。

try 
{ 
    stage.displayState = StageDisplayState.FULL_SCREEN; 
    stage.displayState = StageDisplayState.NORMAL; 
} catch (error:SecurityError) { 
// your hide button code    
} 
+0

のための例では、実際にあなたがすることはできません、フラッシュプレーヤーのプラグインの下で、ブラウザで実行されていますMouseEvent.CLICKのようなユーザー開始イベントにアタッチされていない限り、このコードを実行することもできます。 – dlamblin

+0

それは単なる情報デザインの問題です。テストプロセスを大幅に阻害することはほとんどありません。 – Jotham

0

実際にドキュメントが不明ですActionScript 3でフルスクリーンモードがどのように検出されるかについては、

しか表示されません。フルスクリーンモードに切り替えようとすると例外が発生する場合がありますあなたが捕まえることができます。これで簡単にフルスクリーンモードのボタンを隠すことや表示することはできません。

"livedocs"は方法があるかもしれませんが、 "livedocs"は不完全または不完全であることはよく知られています。あなたはそれが戻ってこないことに注意:

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 
} 

編集:あなたがして、ルートオブジェクトの偶然に見ることによってデフォルトはfalse「フルスクリーン」のparamの値を読み取ることができるかもしれない

フラッシュバーで。

+0

"これで簡単にフルスクリーンモードのボタンを非表示にすることはできません。"フルスクリーンモードを切り替えているときにSecurityExceptionを捕まえると、それは許可されません。 – bzlm

+0

この質問には、「loaderInfo.parametersには他のフラッシュバーが付属していません」という質問があります。 – bzlm

+0

ロジック。例外が発生しない場合はどうなりますか?ボタンを描く前に誰かがクリックされる前にモードを切り替えるようになりました。 もちろん:セキュリティモデルでは、ユーザーイベントによって開始されない限り、stage.displayStateを割り当てることはできません。はい、もっと編集するときに私はflashvarsビットを見逃しました。 – dlamblin

0

埋め込みにallowfullscreenがfalse/trueに設定されているかどうかを検出することはできません。

残念ながら、最終的なエラーをキャッチしてボタンを無効にするには、ユーザーがボタンをクリックするまで待つ必要があります。

まだ...フラッシュプレーヤーは、この値自体をと評価する必要があります。はおそらくそれを編集している必要があります。埋め込みをサードパーティが処理する場合は、フルスクリーンモードを許可するかどうかを決定する必要があります。このような場合は、余分なflash-varを追加するだけです(例:fullscreenButton = false)。

0

私が考えることができる唯一の方法は、ExternalInterface経由でJavaScript関数を呼び出すことです。 JavaScriptからFlash埋め込みパラメータを簡単に読み取ることはできますが、あなたのムービーが埋め込まれているHTMLにJSを挿入できるのであれば、それが何であるかを調べるよりもパラメータを変更したほうがいいと思います。

これ以外にも、stage.displayState = StageDisplayState.FULL_SCREEN;はユーザーイベントによってのみトリガーされるという点を除いて、Jothamの解決策はOKと思われます。

フルスクリーンモードは、ユーザーによるマウスクリックまたはキー押下に応答して開始されます。ムービーはユーザー入力なしでStage.displayStateを変更することはできません。 (http://help.adobe.com/en_US/AS3LCR/Flash_10.0/flash/display/Stage.html#displayState

2番目のボタンを押すと、Jothamのコードが実行されます。とにかくユーザーがログインボタンやその他のボタンを押しています。

0

上記投稿は機能しません。 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); 
       } 
      }); 
     } 

    } 
} 

はトレースします。

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一部です。

-1

私たちは厳重なセキュリティの設定ホストでフルスクリーンモードを可能にしようとしている上で私のテストから

_root.stage.addEventListener(FullScreenEvent.FULL_SCREEN, onFullScreenListenter); 

に耳を傾けるようにしてくださいと、この機能をチェックできると信じて、それがヌル例外を返します。私はFullScreenEventが存在しないためだと思います。フルスクリーンがステージのプロパティを経由して許可されているかどうかをチェックすることができますAS3

FOR

2

SOLUTION、私の場合

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 
} 
+3

stage.allowsFullScreenは10.2で追加されました。これは古いプレーヤー、これは私が見つけた最良の解決策です。私は以下を使用します:stage.hasOwnProperty( "displayState")&& stage.hasOwnProperty( "allowsFullScreen")&& stage ["allowsFullScreen"] –

関連する問題