Javascript 外部接口问题:在NPObject上调用方法时出错

Javascript 外部接口问题:在NPObject上调用方法时出错,javascript,flash,actionscript-3,video-streaming,externalinterface,Javascript,Flash,Actionscript 3,Video Streaming,Externalinterface,使用Actionscript 3的外部Api制作flash视频流web应用程序。我正处于项目的一个非常初级的阶段,我们只是在试验外部接口。现在我只有一个flash对象和3个按钮,每个按钮可以播放暂停和加载视频。当前设置为执行任何操作的唯一按钮是加载按钮。我的swf和html文件位于同一个文件系统上,我的视频文件位于另一台服务器上,流量通过媒体服务器重定向 当我按下load按钮时,它应该只给出服务器上视频文件的路径。相反,它抛出一个错误,读取error:error调用NPObject上的方法 无需

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

当我按下load按钮时,它应该只给出服务器上视频文件的路径。相反,它抛出一个错误,读取error:error调用NPObject上的方法

无需进一步说明,以下是相关代码的片段:

动作脚本:

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都在本地机器上的同一个文件夹中。只有文件来自外部,在任何情况下,当我在object标签中声明flash播放器时,我认为我已经正确设置了安全设置,但可能我遗漏了一些东西

若你们不能直接解决我的问题,有人能解释一下在NPObject上调用方法的错误是什么意思吗?我确信这是flash js通信特有的,因为我以前从未见过它,这也是我从谷歌搜索中收集到的


高级感谢。

你能试着设置安全性吗;在AS3代码中,它何时启动?

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

<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>

您是否可以删除视频代码,以确定外部接口是否正常工作。在AS函数中放入一些非常简单的内容,如“testSquare.gotoAndStop2;”只是为了确保它100%是从JS/HTML触发的。让我知道结果,我修改了我的as3和js代码。在js中,我添加了一个调用as3中的函数的函数,我刚才也添加了这个函数。js函数将字符串传递给as3函数。然后,as3函数调用一个js函数来触发警报。这起作用了。这是否意味着as3存在与视频相关的问题?