正如我在this other post中所述,我的MP3播放器没有在线加载,但在我的本地电脑上完美运行。
今天我正在弄乱文件,我终于得到了闪光灯给我一个错误。这可能是MP3播放器无法在线加载的原因吗?这是错误:
TypeError: Error #2007: Parameter text must be non-null.
at flash.text::TextField/set text()
at Mp3Player_fla::MainTimeline/id3Handler()
顺便说一下,我有自己的SWF MP3。它被主要的瑞士法郎称为。如果我将所有代码放入主SWF中它可能有用吗?这不应该有所作为,但也许是因为我正在加载大型电影作为背景和许多其他swf的同时,它弄乱了吗?
答案 0 :(得分:1)
我在我的网站上使用的MP3播放器是由FlashXML开发的,最初我遇到了同样的问题,但我与FX的人谈过,他们把问题排除在外。
真的被困住,直到他们帮助了我。如果您仍有兴趣,可以访问www.flashxml.net/mp3-player.html
查看答案 1 :(得分:0)
您的错误在id3Handler
函数中。您似乎正在尝试将文本字段的值设置为null。如果您无法弄清楚,请发布id3Handler
的代码,我会再给您一些信息。可能有些东西还没有加载。
答案 2 :(得分:0)
如果未定义id3标记,您可以尝试捕获id3Handler中的错误
function id3Handler(evt:Event):void { try{ songInfo.text = /*song.id3.artist + ": " +*/ song.id3.songName; }catch(e:Error) { trace(e ); //or... songInfo.text = "No name" } }
虽然您可能遇到安全问题,但在这种情况下会返回id3信息。你使用跨域政策文件吗?
从Sound类文档中提取:
Certain operations dealing with sound are restricted. The data in a loaded sound cannot be accessed by a file in a different domain unless you implement a cross-domain policy file. Sound-related APIs that fall under this restriction are Sound.id3 , SoundMixer.computeSpectrum(), SoundMixer.bufferTime, and the SoundTransform class.
编辑:
这是一个非常宽松的策略文件,复制它,将其保存到文件并命名文件
crossdomain.xml
然后将其上传到您网站的根文件夹,例如example.com
http://example.com/crossdomain.xml
<?xml version="1.0"?>
<!DOCTYPE cross-domain-policy SYSTEM
"http://www.adobe.com/xml/dtds/cross-domain-policy.dtd">
<cross-domain-policy> <site-control permitted-cross-domain-policies="all"/>
<allow- access-from domain="*" secure="false"/>
<allow-http-request-headers-from domain="*" headers="*" secure="false"/>
</cross-domain-policy>
如果有效,请阅读本文
http://kb2.adobe.com/cps/142/tn_14213.html
了解如何使用跨域政策文件保护您的网站