如果allowfullscreen参数为false,我想删除全屏按钮
param value="true" name="allowfullscreen"
有谁知道是否有可能检测到这个值?它在loaderInfo.parameters上没有其他flashvars。
答案 0 :(得分:2)
您想要的会员是
stage.displayState
可以像这样分配:
import flash.display.StageDisplayState;
....
stage.displayState = StageDisplayState.FULL_SCREEN;
stage.displayState = StageDisplayState.NORMAL;
我建议阅读:
[编辑:
哦,伙计,完全误解了你的问题。]
经过一点点测试后,看起来你可以使用异常机制测试它而没有任何可察觉的闪烁:
try
{
stage.displayState = StageDisplayState.FULL_SCREEN;
stage.displayState = StageDisplayState.NORMAL;
} catch ( error:SecurityError ) {
// your hide button code
}
答案 1 :(得分: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
}
答案 2 :(得分:0)
实际上,有关如何在ActionScript 3中检测到允许或不允许全屏模式的文档不清楚。
他们唯一提到的是,如果您尝试切换到全屏模式并且不允许,那么您将获得一个异常,您可以捕获。这不会让您隐藏或显示全屏模式按钮。
可能有办法,但“生活方式”出了名的不完整或简短。
您可以通过查看根对象的参数来读取“全屏”参数的值,默认为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中。
答案 3 :(得分:0)
您无法检测嵌入是否将allowfullscreen设置为false / true。
不幸的是,您需要等到用户点击按钮以捕获最终错误,从而禁用该按钮。
仍然......你必须处于一个非常特殊的环境中才能要求flashplayer自己评估这个值,因为你可能编辑它。如果嵌入由第三方处理,需要能够决定是否允许全屏模式。如果是这种情况,只需添加一个额外的flash-var(例如fullscreenButton = false)。
答案 4 :(得分:0)
我能想到的唯一方法是通过ExternalInterface调用JavaScript函数。您可以轻松地从JavaScript中读取flash嵌入参数,但我想如果您可以将JS插入到嵌入电影的HTML中,您可能更改参数而不是尝试找出它是什么。
除此之外,Jotham的解决方案似乎没问题,除了stage.displayState = StageDisplayState.FULL_SCREEN;
只能由用户事件触发的事实。
响应用户点击鼠标或按键启动全屏模式;没有用户输入,电影无法更改Stage.displayState。 (http://help.adobe.com/en_US/AS3LCR/Flash_10.0/flash/display/Stage.html#displayState)
你应该有第二个按钮,当按下时,运行Jotham的代码。我会去找一个登录按钮或用户可以按的任何其他按钮。
答案 5 :(得分: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);
}
});
}
}
}
禁用FullScreen时将跟踪:
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
部分。
答案 6 :(得分:-1)
我相信我们可以通过尝试收听
来检查此功能_root.stage.addEventListener(FullScreenEvent.FULL_SCREEN, onFullScreenListenter);
从我在严格安全性设置主机中尝试允许全屏模式的测试中,它将返回null异常。我猜因为FullScreenEvent不存在。
答案 7 :(得分:-3)
编辑:现在已经过时了(对于FP 8.5 / 9来说是个黑客攻击)
以下内容将检测您的播放器是否具有全屏可用性(thx @mrdoob):
var hasFullscreen:Boolean = (stage.hasOwnProperty("displayState"))