js控制flash播放器

JavaScript018

js控制flash播放器,第1张

JS代码

<script>

function callFlash(arg) {

document("flash的name").callFlaFunc(arg)

}

</script>

flash 代码

import flash.externalInterface.*

ExternalInterface.addCallback("callFlaFunc", null, yourfunc);//添加回调函数

function yourfunc(arg){//回调函数所执行的函数,arg为传入的参数

//添加你的控制代码代码

//就是你要添加跳转的代码

}

点击按钮后调用JS的callFlash(arg)即可

可以的。

flv.js就使用Flash播放器播RTMP流Flash兼容性很好,但是性能差默认被很多浏览器禁用,不想用Flash兼容也可以用HLS,但是PC端只有Safari支持HLS移动端。

Flv.js是HTML5Flash视频(FLV)播放器,纯原生JavaScript开发,没有用到Flash。

FLASH中代码://导入包

import flash.external.*

//提供JS访问的函数名

var _method:String = "say"

//指定本地函数中this变量的作用域,可设置为null留空

var e_area:Object = null

//AS内部函数名

var method:Function = say

//将函数注册到容器列表

var wasSuccessful:Boolean = ExternalInterface.addCallback(_method, e_area, method)

//查看注册是否成功

if(wasSuccessful){

result_txt.text = "函数注册成功"

}

//本地的函数

function say(txt:String) {

result_txt.text = txt

}

Html中代码:<div>

<form>

<input type="button" onclick="callExternalInterface()" value="JS调用AS方法" />

</form>

<script>

function callExternalInterface() {

thisMovie("demo").say("Hello,World")

}

//浏览器兼容访问DOM

function thisMovie(movieName) {

if (navigator.appName.indexOf("Microsoft") != -1) {

return window[movieName]

}

else {

return document[movieName]

}

}

</script>

</div>

其中红色代码是核心代码,其作用原理是AS端通过addCallback函数把AS内部定义的方法注册为可从容器中调用,允许自定义另外一个方法名供 JS来调用这个方法,函数调用成功返回true,失败返回flase,在此例中通过wasSuccessful变量来判断函数是否注册成功。函数注册成功以后,JS可以通过DOM来访问SWF对象,然后直接调用预定义的方法即可。

通过比较可以看出,使用ExternalInterface来完成AS和JS的通信,代码可以更简洁,更清晰,功能也更强大,不过还有些细节你需要了解,需要使用8.0以上的播放器,对于调用的JS函数不能使用递归,同时安全域限制也必须在考虑之中。