2009-03-18 5 views

Répondre

-3

EDIT: Ceci est obsolète maintenant (était un hack pour FP 8,5/9)

qui suit détectera si votre lecteur a la disponibilité fullscreen (thx @mrdoob):

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

Cette solution ne fonctionne pas car la propriété displayState est toujours disponible, même lorsque allowFullScreen = false, testé dans Flash 10.0. – sixones

+0

Je sais, comme vous pouvez voir cela a été posté il y a 2 ans alors que le problème était de détecter si la version du lecteur supportait réellement cette fonctionnalité ... kthx –

2

Le membre que vous voulez est

stage.displayState 

Il peut être attribué comme ceci:

import flash.display.StageDisplayState; 

.... 

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

Je recommande la lecture:

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

[Edit:

homme Oh, tout à fait mal lu votre question]

Après un petit test, il semble que vous pouvez simplement utiliser le mécanisme d'exception pour tester sans aucune scintillement perceptible.

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

en cours d'exécution fait dans le navigateur, sous le plugin flash player, vous ne pouvez pas faites même ce code à moins qu'il ne soit associé à un événement initié par l'utilisateur tel que MouseEvent.CLICK. – dlamblin

+0

C'est juste une question de conception de l'information. Cela ne va guère empêcher le processus de test. – Jotham

0

En fait, les documents ne sont pas claires La seule chose qu'ils mentionnent est que si vous essayez de passer en mode plein écran et qu'il n'est pas autorisé, alors vous obtiendrez une exception. , que vous pouvez attraper. Cela ne vous permettra pas facilement de masquer ou d'afficher un bouton de mode plein écran.

Il peut y avoir un moyen, mais les "livesocs" sont notoirement incomplètes ou brèves.

Vous pourriez être en mesure de lire la valeur de PARAM « fullscreen » qui par défaut à false en regardant les paramters de l'objet racine avec:

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 
} 

Edit: vous avez noté qu'il ne revient pas dans les flashvars.

+0

"Cela ne vous permettra pas facilement de cacher ou d'afficher un bouton de mode plein écran" - pourquoi pas? Si vous attrapez une SecurityException en basculant en mode plein écran, ce n'est pas autorisé. – bzlm

+0

La question dit "Il ne vient pas avec d'autres flashvars sur loaderInfo.parameters". – bzlm

+0

Logique. Que faire si vous ne recevez pas d'exception? Maintenant, vous changez de mode AVANT de dessiner le bouton et avant que quelqu'un ne clique dessus. Sauf évidemment: le modèle de sécurité dit que vous ne pouvez pas assigner stage.displayState à moins d'être initié par un événement utilisateur. Oui, j'ai raté le bit flashvars lors de l'édition de plus. – dlamblin

0

Vous ne pouvez pas détecter si l'intégration a l'attribut allowfullscreen défini sur false/true.

Malheureusement, vous devrez attendre que l'utilisateur clique sur le bouton pour attraper l'erreur éventuelle et ainsi désactiver le bouton.

Encore ... Vous devez être dans un contexte très spécial pour exiger flashplayer évaluer cette valeur elle-même comme vous probablement modifié il. Dans le cas où l'intégration est gérée par un tiers qui doit être en mesure de décider si le mode plein écran doit être autorisé ou non. Si tel est le cas, ajoutez simplement un flash-var supplémentaire (par exemple fullscreenButton = false).

0

La seule méthode que je peux penser serait d'appeler une fonction JavaScript via ExternalInterface. Vous pouvez facilement lire les paramètres d'intégration flash de JavaScript, mais je pense que si vous pouviez insérer un JS dans le code HTML de votre film, vous auriez plutôt changé le paramètre que d'essayer de savoir de quoi il s'agit.

Autre que cela, la solution de Jotham semble ok, à part le fait que stage.displayState = StageDisplayState.FULL_SCREEN; peut seulement être déclenché par un événement d'utilisateur.

Le mode plein écran est lancé en réponse à un clic de souris ou à une pression de touche de l'utilisateur; le film ne peut pas changer Stage.displayState sans l'intervention de l'utilisateur. (http://help.adobe.com/en_US/AS3LCR/Flash_10.0/flash/display/Stage.html#displayState)

Vous devriez avoir un second bouton qui, lorsqu'il est pressé, exécute le code de Jotham. J'irais chercher un bouton de connexion ou tout autre bouton que l'utilisateur appuierait de toute façon.

0

Malheureusement , le message ci-dessus ne fonctionne pas. A swf avec:

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); 
       } 
      }); 
     } 

    } 
} 

tracera quand FullScreen est désactivé:

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. 

Le problème étant la partie Full Screen Enabled? true.

-1

je crois que nous pourrions vérifier cette capacité avec l'essayer d'écouter la

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

De mon test à essayer de permettre le mode plein écran d'accueil du jeu de haute sécurité, il retournera exception nulle. Je suppose que parce que FullScreenEvent n'existe pas.

2

SOLUTION POUR AS3

vous pouvez vérifier si plein écran est autorisé via les propriétés de la scène, par exemple pour mon cas

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 a été ajouté en 10.2 donc cela ne fonctionnera pas pour les joueurs plus âgés, mais c'est la meilleure solution que j'ai trouvée. J'utilise: stage.hasOwnProperty ("displayState") && stage.hasOwnProperty ("permetFullScreen") && stage ["permetFullScreen"] –

Questions connexes