Question

Je voudrais supprimer un bouton plein écran si le paramètre allowfullscreen est false.
& nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; param value = " true " name = "allowfullscreen"

Quelqu'un sait-il s'il est possible de détecter cette valeur? Il ne vient pas avec d'autres flashvars sur loaderInfo.parameters.

Était-ce utile?

La solution

EDIT: ceci est obsolète maintenant (c'était un hack pour FP 8.5 / 9)

Ce qui suit détectera si votre lecteur est disponible en plein écran (merci @mrdoob):

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

Autres conseils

Le membre que vous souhaitez est

.
stage.displayState

Il peut être attribué comme suit:

import flash.display.StageDisplayState;

....

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

Je recommande de lire:

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

[Éditer:

Oh mec, totalement mal interprété votre question.]

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

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

SOLUTION POUR AS3

vous pouvez vérifier si le plein écran est autorisé via les propriétés de la scène, 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
}

Vous ne pouvez pas détecter si allowfullscreen est défini sur false / true pour l'incorporation.

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

Pourtant ... Vous devez être dans un contexte très spécial pour obliger flashplayer à évaluer cette valeur elle-même, car vous l'avez probablement modifiée. Si l'intégration est gérée par un tiers, il doit pouvoir décider si le mode plein écran doit être autorisé ou non. Si tel est le cas, ajoutez simplement une variable flash-var supplémentaire (par exemple, fullscreenButton = false).

En fait, les documents ne sont pas clairs sur la manière dont le mode plein écran autorisé ou non peut être détecté dans ActionScript 3.

La seule chose qu’ils mentionnent, c’est que si vous essayez de passer en mode plein écran et qu’il est interdit, vous obtiendrez une exception que vous pourrez intercepter. Cela ne vous permettra pas facilement de masquer ou d'afficher un bouton de mode plein écran.

Il y a peut-être un moyen, mais l'option "livesoc" notoirement incomplets ou brefs.

Vous pourrez peut-être lire le "plein écran". La valeur de param qui par défaut est false en regardant les paramètres 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é que cela ne revient pas dans les flashvars.

La seule méthode à laquelle je puisse penser serait d'appeler une fonction JavaScript via ExternalInterface. Vous pouvez facilement lire les paramètres d'intégration Flash à partir de JavaScript, mais je pense que si vous pouviez insérer un JS dans le code HTML de votre film, vous auriez préféré le modifier plutôt que d'essayer de le connaître.

En dehors de cela, la solution de Jotham semble correcte, mis à part le fait que stage.displayState = StageDisplayState.FULL_SCREEN; ne peut être déclenché que par un événement utilisateur.

  

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

Vous devriez avoir un deuxième bouton qui, une fois pressé, lance le code de Jotham. Je choisirais un bouton de connexion ou tout autre bouton sur lequel l'utilisateur appuierait de toute façon.

Malheureusement, le message ci-dessus ne fonctionne pas. Un 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);
                }
            });
        }

    }
}

Trace lorsque 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 le Plein écran activé? vrai partie.

Je pense que nous pourrions vérifier cette capacité en essayant d'écouter la

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

À partir de mon essai sur l’autorisation du mode plein écran sur un hôte à sécurité renforcée, il renvoie une exception null. Je suppose que, à cause de FullScreenEvent, n’existe pas.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top