Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/apache-flex/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 即不让闪存流音频_Javascript_Apache Flex_Actionscript 3_Internet Explorer_Swfobject - Fatal编程技术网

Javascript 即不让闪存流音频

Javascript 即不让闪存流音频,javascript,apache-flex,actionscript-3,internet-explorer,swfobject,Javascript,Apache Flex,Actionscript 3,Internet Explorer,Swfobject,这个问题发生在IE8和IE7上。我有一个用flex编译的小swf。它基本上只是围绕音频流功能的包装。所有控件等都是带有javascript的html。我使用swfobject的“静态”方法加载swf。这在Firefox和Chrome中非常有效。在IE中,swf加载正确,但当我尝试用它来流式传输任何音频时,我会得到一个错误 编辑:为了找到问题,我已经减少了代码的数量。您可以看到新版本正在运行。以下是我的简化版本的错误、html和flex文件: TypeError: Error #1009: Can

这个问题发生在IE8和IE7上。我有一个用flex编译的小swf。它基本上只是围绕音频流功能的包装。所有控件等都是带有javascript的html。我使用swfobject的“静态”方法加载swf。这在Firefox和Chrome中非常有效。在IE中,swf加载正确,但当我尝试用它来流式传输任何音频时,我会得到一个错误

编辑:为了找到问题,我已经减少了代码的数量。您可以看到新版本正在运行。以下是我的简化版本的错误、html和flex文件:

TypeError: Error #1009: Cannot access a property or method of a null object reference.
    at isolated/playStream()[/home/defrex/code/bd/trunk/ackbar/media/flex/isolated.mxml:19]
    at Function/http://adobe.com/AS3/2006/builtin::apply()
    at flash.external::ExternalInterface$/_callIn()
    at <anonymous>()
TypeError:Error#1009:无法访问空对象引用的属性或方法。
在隔离的/playStream()[/home/defrex/code/bd/trunk/ackbar/media/flex/isolated.mxml:19]
在功能上/http://adobe.com/AS3/2006/builtin::apply()
at flash.external::ExternalInterface$/\u callIn()
在
和flex:

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" creationComplete="init()">
    <mx:Script>
        import flash.external.ExternalInterface;
        import flash.media.Sound;
        import flash.media.SoundChannel;
        import flash.net.URLRequest;

        public function init():void {
            ExternalInterface.addCallback("play_fuie", playStream);
            ExternalInterface.call("console.log('flash loaded')");
        }

        public function playStream(stream:String):void {
            var url:URLRequest = new URLRequest(stream);
            var audio:Sound = new Sound();
            audio.load(url);
            var chan:SoundChannel = audio.play();
            chan.soundTransform.volume = 0.5;
        }
    </mx:Script>
</mx:Application>

导入flash.external.ExternalInterface;
导入flash.media.Sound;
导入flash.media.SoundChannel;
导入flash.net.URLRequest;
公共函数init():void{
addCallback(“播放”,播放流);
ExternalInterface.call(“console.log('flash-loaded')”);
}
公共函数播放流(流:字符串):无效{
var url:URLRequest=新的URLRequest(流);
var audio:Sound=新声音();
音频加载(url);
var chan:SoundChannel=audio.play();
chan.soundTransform.volume=0.5;
}

很难在代码中看到流是如何传递到flash的,如果它是从flash参数传递的,请记住ie和firefox在将参数传递到flash对象时使用不同的语法


很难在代码中看到流是如何传递到flash的,如果它是从flash参数传递的,请记住ie和firefox在将参数传递到flash对象时使用不同的语法


经过3天令人沮丧的调试后,故事的寓意是:软件盗版很糟糕。事实证明,在VirtualBox中进行IE测试的开发团队发布的粗略的“XP海盗版”存在某种导致问题的bug(或者恶意软件)。当我们在安装在同一个虚拟机上的Chrome上进行测试时,出现了同样的错误(而Linux下的Chrome运行得很好),我们意识到操作系统可能有问题。果不其然,当我们得到一个合法版本的IE时,一切都很完美


因果报应是残酷的。

经过3天令人沮丧的调试,故事的寓意是:软件盗版是不好的。事实证明,在VirtualBox中进行IE测试的开发团队发布的粗略的“XP海盗版”存在某种导致问题的bug(或者恶意软件)。当我们在安装在同一个虚拟机上的Chrome上进行测试时,出现了同样的错误(而Linux下的Chrome运行得很好),我们意识到操作系统可能有问题。果不其然,当我们得到一个合法版本的IE时,一切都很完美


因果报应可能是残酷的。

我编辑了这个问题来说明这一点,但是这个函数是通过外部接口调用的。它是作为一个字符串从JavaScript传入的,我只是遇到了这个问题(有一些意外,因为我还使用了应该在mac上运行的外部接口)。在以下浏览器和操作系统组合中使用ExternalInterface类:浏览器操作系统操作系统Internet Explorer 5.0及更高版本Windows Netscape 8.0及更高版本Windows MacOS Mozilla 1.7.5及更高版本Windows MacOS Firefox 1.0及更高版本Windows MacOS Safari 1.3及更高版本MacOS so if你在mac上运行可能是个问题。也许这会有帮助:Eran,这一切在mac上都很好,我使用的是在“对象加载”事件中从swfobject专门传递给我的播放器的引用。引用正在工作,因为我从被调用的方法内部从flash返回了一个错误。很抱歉,这没有帮助,我仍然认为您的flash代码很好,调用flash函数并不一定意味着正确传递了stream参数(听起来好像您在传递null)。另外,因为只有在ie上才会出现错误,所以您的错误很可能是在javascriptI中。我编辑了问题来说明这一点,但该函数是通过ExternalInterface调用的。它是作为一个字符串从JavaScript传入的,我只是遇到了这个问题(有一些意外,因为我还使用了应该在mac上运行的外部接口)。在以下浏览器和操作系统组合中使用ExternalInterface类:浏览器操作系统操作系统Internet Explorer 5.0及更高版本Windows Netscape 8.0及更高版本Windows MacOS Mozilla 1.7.5及更高版本Windows MacOS Firefox 1.0及更高版本Windows MacOS Safari 1.3及更高版本MacOS so if你在mac上运行可能是个问题。也许这会有帮助:Eran,这一切在mac上都很好,我使用的是在“对象加载”事件中从swfobject专门传递给我的播放器的引用。引用正在工作,因为我从被调用的方法内部从flash返回了一个错误。很抱歉,这没有帮助,我仍然认为您的flash代码很好,调用flash函数并不一定意味着正确传递了stream参数(听起来好像您在传递null)。另外,因为只有在ie上才会出现错误,所以您的错误很可能出现在javascript中
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" creationComplete="init()">
    <mx:Script>
        import flash.external.ExternalInterface;
        import flash.media.Sound;
        import flash.media.SoundChannel;
        import flash.net.URLRequest;

        public function init():void {
            ExternalInterface.addCallback("play_fuie", playStream);
            ExternalInterface.call("console.log('flash loaded')");
        }

        public function playStream(stream:String):void {
            var url:URLRequest = new URLRequest(stream);
            var audio:Sound = new Sound();
            audio.load(url);
            var chan:SoundChannel = audio.play();
            chan.soundTransform.volume = 0.5;
        }
    </mx:Script>
</mx:Application>