JoJ*_*oJo 9 javascript flash actionscript-3
我有使用HTML/CSS设计的视频播放器镀铬按钮.全屏按钮需要告诉Flash全屏,但Adobe禁止这种Javascript-to-Actionscript交互.什么是聪明的黑客来解决这个问题?
我正在制作支持许多插件的基于网络的视频播放器 - Flash,VLC,HTML5,iPhone的Quicktime等...我希望所有这些播放器共享相同的Chrome按钮 - 播放,暂停,静音,音量滑块,分辨率选择器,全屏.这些按钮使用HTML/CSS布局.
____________ ____________ ____________
| | | | | |
| Flash | | VLC | | HTML5 | ...
| | | | | |
------------- ------------- -------------
[A][B][C][D] [A][B][C][D] [A][B][C][D]
Run Code Online (Sandbox Code Playgroud)
我处理的所有插件都允许Javascript控制插件.这是一个如何让HTML元素与HTML5视频交互的示例.在与其他插件连接时,代码几乎相同.唯一改变的是调用的实际函数名称.
// Using Prototype JS library
$('playButtonId').observe(
'click',
function(event) {
$('html5Id').play();
}
);
Run Code Online (Sandbox Code Playgroud)
Flash中的全屏出现问题.在Actionscript 3.0中,您可以执行此操作以向Javascript公开全屏回调:
package {
import flash.external.*
private var theStage:Stage;
public class Player {
public function Player(stageReference) {
this.theStage = stageReference;
ExternalInterface.addCallback("fullScreen", this.fullScreen);
}
private function fullScreen():void {
this.theStage.displayState = StageDisplayState.FULL_SCREEN;
}
}
}
Run Code Online (Sandbox Code Playgroud)
当Javascript调用时$('flashPlayerId').fullScreen();,没有任何反应,因为Adobe要求SWF中的单击触发全屏事件.这是为了防止黑客编写劫持用户屏幕而不启动它的恶意网站.
我正在重新创建Flash中的所有chrome按钮以支持全屏.我必须将所有图形导入Flash并将所有Javascript转换为Actionscript.
____________ ____________ ____________
| | | | | |
| Flash | | VLC | | HTML5 | ...
| | | | | |
| | ------------- -------------
| A B C D | [A][B][C][D] [A][B][C][D]
-------------
Run Code Online (Sandbox Code Playgroud)
这给我带来了很多痛苦和痛苦.每当我需要进行更改时,我都会更新HTML和JS.这种变化反映在VLC,HTML5和其他玩家身上.但由于Flash不共享相同的HTML chrome按钮,因此我必须复制Flash/AS中的更改.所以我正在寻找一种更好的解决方案来减少重复代码的数量.它不一定要风格清洁.我只想要易于维护.
只需给您的 Flash 影片设置 0.1% 的不透明度(您需要使用 wmode),并将其直接放置在 html 按钮上方。用户点击 flash 但看到的是 html。动作脚本代码只是告诉玩家进入全屏,然后使用ExternalInterface调用一些javascript。请赏金!