如果 allowedfullscreen 参数为 false,我想删除全屏按钮。
      param value="true" name="allowfullscreen"

有谁知道是否可以检测到该值?它不附带 loaderInfo.parameters 上的其他 flashvar。

有帮助吗?

解决方案

修改:这是现在已经过时(是为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;

我建议阅读:

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            
}

解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设置为假/真。

不幸的是,你需要等待,直到在用户点击按钮赶上最后的错误,从而禁用按钮。

不过......你一定是在一个非常特殊的情况下需要的Adobe Flash评估这个价值本身的的可能编辑它。如果嵌入由第三方需要能够决定全屏模式是否应该被允许或不处理。如果是这种情况下,只需添加一个额外的闪光-VAR(例如fullscreenButton = FALSE)。

实际上,文档是不清楚如何全屏模式被允许或不能够在ActionScript 3来检测。

他们唯一值得提及的是,如果你尝试切换到全屏模式,它是不允许的,那么你会得到一个例外,可以捕获。这不会轻易让你隐藏或显示全屏模式按钮。

有可能的一种方式,但“LiveDocs中”是众所周知的不完整的或短暂。

<击>您可能能够阅读“全屏”参数的值默认为false通过看根对象的paramters:

<击>
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
}

<击> 编辑:您注意的是,它不回来的Flash变量

我可以想到的唯一方法是经由ExternalInterface的呼叫JavaScript功能。您可以轻松读取从JavaScript闪存嵌入参数,但我想,如果你能插入JS到你的电影被嵌入在HTML,你必须改变,而参数不是试图找出它是什么。

除此之外,约坦的解决方案似乎确定,除了一个事实,即stage.displayState = StageDisplayState.FULL_SCREEN;只能由用户事件触发。

  

全屏模式是响应于鼠标点击或按键由用户发起;没有用户输入的影片不能更改Stage.displayState。 ( http://help.adobe.com /en_US/AS3LCR/Flash_10.0/flash/display/Stage.html#displayState

您应该有第二个按钮按下时,运行约坦的代码。我会去登录按钮或任何其他按钮,用户将按下无论如何

不幸的是,上述后不起作用。与一个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一部分。

我相信我们可以检查这个能力与尝试听

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

从我在试图允许在严密的安全设置主机全屏模式下的测试,它会返回null异常。我想,因为FullScreenEvent的是不存在的。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top