asp页面中写得一句代码,通过它获得后台的变量,即听力的url:
- HTML code
<param NAME="flashvars" value="url=<%=address %>">
然后要求点击一个超链接,进入新的asp页面,听力就开始播放。
flex中加载url代码是这样的
- JScript code
public function init():void{ pl(); } public function pl():void { if(status == true) { //如果status为true,就不播放音乐,否则继续播放。 } else { trace("playing the position is "+pos); tim.addEventListener(TimerEvent.TIMER,showSoundWave); tim.start(); if(pos == 0) { if(soundURL == null){ //此处获得asp页面传来的url变量。 [color=#FF0000][u] soundURL = root.loaderInfo.parameters["url"]; [/u][/color] Alert.show("soundURL---"+soundURL,"TITILE"); var loader:URLLoader = new URLLoader(); var request:URLRequest = new URLRequest(soundURL); try { loader.load(request); } catch (error:Error) { trace("Unable to load requested document."); } sud.load(request); } else{} scn = sud.play(0); sud.addEventListener(IOErrorEvent.IO_ERROR,handleError); pb.addEventListener(Event.ENTER_FRAME,ud); scn.addEventListener(Event.SOUND_COMPLETE,replay); songztime_lbl.addEventListener(Event.RENDER,stime); playtime_lbl.addEventListener(Event.RENDER,stime); status = true; } else { sud.addEventListener(IOErrorEvent.IO_ERROR,handleError); scn = sud.play(pos); status = true; } } }
结果打开页面后,总是提示:
TypeError: Error #1009: 无法访问空对象引用的属性或方法。
at listens3/pl()[D:\flexworkspace\MusicPlayer\src\listens3.mxml:115]
at listens3/init()[D:\flexworkspace\MusicPlayer\src\listens3.mxml:96]
at listens3/___listens3_Application1_initialize()[D:\flexworkspace\MusicPlayer\src\listens3.mxml:5]
at flash.events::EventDispatcher/dispatchEventFunction()
...............
难道flash在初始化时候想获得url,难道必须通过事件触发吗?
之前的播放器做的是,没有初始化,点击pl(),就开始加载url,正常播放。
一旦我添加上了
public function init():void{
pl();
}
就总是提示空对象,到底是怎么回事呢?
help!!!
help!!!
help!!!
------解决方案--------------------
你需要等待一下,等场景加载完成后,就没问题了。因为你的组件等都还没有构造好。
一般是用addToStage的监听。或者用EnterFrame监听,执行后删掉监听。这样可以确定场景加载完成。