6

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

有谁知道是否可以检测到该值?loaderInfo.parameters 上没有其他 flashvars。

4

8 回答 8

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            
}
于 2009-03-18T20:10:54.163 回答
2

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
}
于 2011-09-21T17:10:01.063 回答
0

实际上,文档不清楚如何在 ActionScript 3 中检测到是否允许全屏模式。

他们唯一提到的是,如果您确实尝试切换到全屏模式并且不允许这样做,那么您将得到一个异常,您可以捕获该异常。这不会轻易让您隐藏或显示全屏模式按钮。

可能有办法,但众所周知,“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 中返回。

于 2009-03-18T20:25:51.257 回答
0

您无法检测嵌入是否将 allowfullscreen 设置为 false/true。

不幸的是,您需要等到用户单击按钮才能捕获最终错误,从而禁用该按钮。

仍然...您必须处于非常特殊的环境中才能要求 flashplayer 在可能编辑它时自行评估此值。如果嵌入由需要能够决定是否应允许全屏模式的第三方处理。如果是这种情况,只需添加一个额外的 flash-var(例如 fullscreenButton=false)。

于 2009-03-19T09:39:33.423 回答
0

我能想到的唯一方法是通过 ExternalInterface 调用 JavaScript 函数。您可以轻松地从 JavaScript 读取 Flash 嵌入参数,但我想如果您可以将 JS 插入到您的电影嵌入的 HTML 中,您宁愿更改参数而不是尝试找出它是什么。

stage.displayState = StageDisplayState.FULL_SCREEN;除此之外,除了只能由用户事件触发的事实之外,Jotham 的解决方案似乎还可以。

全屏模式响应用户的鼠标点击或按键而启动;没有用户输入,电影无法更改 Stage.displayState。(http://help.adobe.com/en_US/AS3LCR/Flash_10.0/flash/display/Stage.html#displayState

您应该有第二个按钮,当按下该按钮时,它将运行 Jotham 的代码。我会选择登录按钮或用户无论如何都会按下的任何其他按钮。

于 2009-03-24T12:02:03.733 回答
0

可悲的是,上面的帖子不起作用。一个瑞士法郎:

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部分。

于 2009-07-07T17:13:02.383 回答
-1

我相信我们可以通过试听来检查这种能力

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

从我尝试在严格的安全设置主机中允许全屏模式的测试中,它将返回空异常。我猜是因为 FullScreenEvent 不存在。

于 2011-06-14T22:03:57.147 回答
-3

编辑:这现在已经过时了(是 FP 8.5 / 9 的 hack)

以下将检测您的播放器是否具有全屏可用性(谢谢@mrdoob):

var hasFullscreen:Boolean = (stage.hasOwnProperty("displayState"))
于 2009-04-14T15:51:29.453 回答