用debug模式发布的怪问题
2010-02-13 15:34 hbb 阅读(507) 评论(0) 收藏 举报flex sdk发布分Release模式和Debug模式。没仔细研究过,只听说Debug下发布的文件会大一点而已。
今天碰到个怪问题,用的是FlashDeveloper 3.6RTM测试的。
首先建立一个空的test.swf,debug模式下发布。
然后再建立一个loader.swf,用最阳春的代码加载test.swf,但要用Application.currentDomain。放两个handler,一个open,一个complete。
complete以后,再加载一次test.swf,第二次的complete就不会执行了。
但同样把test.swf,用release发布,就正常。或者loader用release发布,也正常。
即使两个都用debug发布,但放到远程调用,比如localhost加载也正常。
再而且,loader和test都放localhost上,也正常。
当然用Flash IDE就更正常了。
所以,我能碰到这种超级罕见的情况,是不是很无语...
说实在的,我并没有去无聊的玩儿Application.currentDomain,实际情况是我的一个子swf,用到了和父swf里相同的类。而两个swf发布的版本都是debug。所以情况就和用了Application.currentDomain一致...
就以上分析来看,关于这个莫名其妙的问题,和debug、release模式有关,和本地、非本地有关,是不是还和FlashDeveloper有关,暂时不知道。
先记一笔,以上。
发现似乎就是FD的问题....因为直接在本地打开也是OK的-_-||||
而且在不同的机器上测试了一下,结果还都不太一样,但总是有问题。
总结,如果加载和被加载的swf都是用FD发布的debug版本,那么连续调用就会出现问题,目前的3.06RTM是这样(3.02也是)。
以上。
放一下测试代码:
package
{
import flash.display.Loader;
import flash.display.Sprite;
import flash.events.Event;
import flash.events.MouseEvent;
import flash.net.URLRequest;
import flash.system.ApplicationDomain;
import flash.system.LoaderContext;
/**
* ...
* @author hbb
*/
public class Test extends Sprite
{
private var _ldr:Loader;
public function Test()
{
if (stage) init(null);
else addEventListener(Event.ADDED_TO_STAGE, init);
}
private function init(e:Event):void
{
removeEventListener(Event.ADDED_TO_STAGE, init);
_ldr = new Loader();
_ldr.contentLoaderInfo.addEventListener(Event.OPEN, onOpen);
_ldr.contentLoaderInfo.addEventListener(Event.COMPLETE, onComplete);
_ldr.load(new URLRequest('test.swf'), new LoaderContext(false, ApplicationDomain.currentDomain));
stage.addEventListener(MouseEvent.CLICK, onClick);
}
private function onClick(e:MouseEvent):void
{
_ldr.load(new URLRequest('test.swf'), new LoaderContext(false, ApplicationDomain.currentDomain));
}
private function onComplete(e:Event):void
{
trace(e);
}
private function onOpen(e:Event):void
{
trace(e);
}
}
}
浙公网安备 33010602011771号