公司的一个项目,涉及N多课件(flash5~flash7版本),为统一界面和控制播放,用一个swf当做统一的shell去load这N多的课件,于是遇上了很多问题,记录一下:
1.很多课件中用到_root,有时这是无法避免的,所以加载後设置_lockroot=true;
2.有些课件中用到声音对象并链接库中的声音,这里如果用 new Sound() 建立声音对象(不指定目标),链接将会失败,可使用new Sound(this);
3.有的课件用到事件侦听,比如Key.addListener(obj),如果shell重复n次加载这个课件,侦听器也会累积到n个,这时按一下键盘就等于按了n下. 解决的办法就是在这个课件中加上代码:onUnload=function(){
Key.removeListener(obj);}
4.有的课件用到 setIntervall ,如果shell重复多次加载这个课件就可能出现问题,办法和上面类似,在onUnload事件的回调函数中使用 clearInterval 清除;
5.有的课件用到 hitTest(x,y) 或是 hitTest(x,y,true) ,这时应该用
localToGlobal 事先将(x,y)转换为全局坐标,再使用hitTest,否则就会出问题