Flash影片(swf文件)可以通过JavaScript进行控制,这主要依赖于Flash Player提供的ExternalInterface
API。这种交互允许网页中的JavaScript与嵌入的Flash内容进行双向通信。
首先需要正确嵌入Flash影片:
<object id="myFlash" width="550" height="400">
<param name="movie" value="movie.swf">
<param name="allowScriptAccess" value="always">
<embed src="movie.swf" width="550" height="400" allowScriptAccess="always"></embed>
</object>
关键点:
allowScriptAccess="always"
允许Flash与JavaScript通信// 获取Flash对象
var flashObj = document.getElementById("myFlash");
// 调用Flash中的方法
function callFlashFunction() {
if (flashObj && flashObj.myFunction) {
flashObj.myFunction("参数");
}
}
// 监听Flash事件
function flashCallback(message) {
console.log("从Flash接收: " + message);
}
$(document).ready(function() {
// 获取Flash对象
var $flashObj = $('#myFlash');
// 调用Flash方法
$('#playBtn').click(function() {
$flashObj[0].playMovie();
});
$('#pauseBtn').click(function() {
$flashObj[0].pauseMovie();
});
});
Flash(ActionScript 3)中需要设置接收和发送方法:
import flash.external.ExternalInterface;
// 注册JavaScript可调用的方法
ExternalInterface.addCallback("playMovie", playMovie);
ExternalInterface.addCallback("pauseMovie", pauseMovie);
function playMovie():void {
// 播放逻辑
}
function pauseMovie():void {
// 暂停逻辑
}
// 调用JavaScript函数
ExternalInterface.call("flashCallback", "Flash已加载");
allowScriptAccess="always"
由于Flash技术已被淘汰,建议考虑以下替代技术:
<video>
标签虽然Flash已过时,但了解这种交互机制仍有价值:
如需在现代项目中实现类似功能,建议使用HTML5技术栈。