gpt4 book ai didi

javascript - 外部接口(interface)问题: Error calling method on NPObject

转载 作者:行者123 更新时间:2023-11-28 10:59:43 27 4
gpt4 key购买 nike

使用 Actionscript 3 的外部 Api 制作 Flash 视频流 Web 应用程序。我正处于项目的一个非常初级的阶段,我们只是在尝试外部接口(interface)。现在我只有一个 Flash 对象和 3 个按钮,每个按钮用于播放暂停和加载视频。当前设置为执行任何操作的唯一按钮是加载按钮。我的 swf 和 html 文件位于同一文件系统上,我的视频文件位于另一台服务器上,流量通过媒体服务器重定向。

当我按下加载按钮时,它应该只给出视频文件在其服务器上的路径。相反,它会抛出一个错误,内容为“错误:在 NPObject 上调用方法时出错”。

不用再说了,这里是相关代码片段:

ActionScript :

function loadVideo(newVideo){
clearInterval(progressInterval);
videoFile = newVideo;
stream.play(videoFile, 0, 0);
videoPositions = "0,0";
};
ExternalInterface.addCallback( "loadVideo", loadVideo );

JAVSCRIPT:(在我的 html 文档的头部)

<head>
<title> External API Test</title>
<script type="text/javascript">
var player = getFlashMovie();
if (typeof MY == 'undefined')
{
MY = {};
}

MY.load = function()
{
console.log('load called');
getFlashMovie().loadVideo("/media/preview/09/04/38833_2_720X405.mp4");
};


function getFlashMovie()
{
var isIE = navigator.appName.indexOf('Microsoft') != -1;
return (isIE) ? window['MYVID'] : document['MYVID'];
}
</script>
</head>

HTML:(与 javascript 在同一文档中)

<body>
<div> This is a test</div>
<div class='my-media-player'>
<object width="720" height="405" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,16,0" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" id='MYVID'>
<param value="as3VideoPlayer.swf" name="movie">
<param value="high" name="quality">
<param value="true" name="play">
<param value="false" name="LOOP">
<param value="transparent" name="wmode">
<param value="always" name="allowScriptAccess">
<embed width="720" height="405" name='MYVID' allowscriptaccess="always" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" quality="high" loop="false" play="true" src="as3VideoPlayer.swf" wmode="transparent">
</object>
<div>
<button type="button" class='play'>Play</button>
<button type='button' class='pause'>Pause</button>
<button type='button' class='load' onclick='MY.load()'>Load</button>
</div>
</div>
</body>

我的错误在哪里?我在很多地方都读到这是一个安全问题,但我的 swf 和 html 都位于本地计算机上的同一文件夹中。只有文件来自外部,无论如何,当我在对象标记中声明我的 Flash 播放器时,我认为我已经正确设置了安全设置,但也许我在那里丢失了一些东西。

如果您不能直接解决我的问题,有人可以解释一下“在 NPObject 上调用方法时出错”是什么意思吗?我确信它特定于 flash-js 通信,因为我以前从未见过它,这就是我从谷歌搜索中收集到的信息。

提前致谢。

最佳答案

我强烈建议SWFObject 。除此之外,我敢说您需要允许脚本访问:

<script type="text/javascript">
// put your needed vars in the object below
var flashVars = {};
var params = {
allowScriptAccess:"always"
};

swfobject.embedSWF("myswf.swf", "myswf", "500", "400", "10.0.0", "", flashVars, params);

</script>

关于javascript - 外部接口(interface)问题: Error calling method on NPObject,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7535043/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com