检测 ActionScript 3.0 中是否允许全屏?
-
20-08-2019 - |
题
如果 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;
我建议阅读:
[编辑:
哦,伙计,完全误解了你的问题。]
经过一番测试后,您似乎可以使用异常机制来测试它,而不会出现任何可察觉的闪烁:
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的是不存在的。