flex发布swf与flash发布SwF通讯
flex比较简单派发加冒泡:
dispatchEvent(new Event("onLoaded",true));
公开自己方法
public function show():void
{
trace("flex show function");
}
然后将发布的各种swf拷贝到 flash的项目下
flash项目:
private function init(e:Event = null):void
{
removeEventListener(Event.ADDED_TO_STAGE, init);
// entry point
loader = new Loader();
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, loaded);
loader.load(new URLRequest("TestFlex.swf"));
}
private function loaded(e:Event):void
{
mc = loader.content as MovieClip;
mc.addEventListener("onLoaded", mcLoadedHandler); //侦听 没什么好说的
addChild(mc);
}
private function mcLoadedHandler(e:Event):void
{
MovieClip(mc).application.show(); //要在mc 添加进舞台之后才能找到相关东西,不然为null
}
大概就是这样,说说我如何找到这个show的吧
首先就是各种折腾。 flex 加载进来的 loader.content 居然是一个mx.managers.SystemManager类,然后我进它类看了下接口无非就是继承的MovieClip那么ok 我把loader.content as MovieClip 然后MovieClip(mc).show();
必然就报错了,再打断点看mc下有些什么方法和属性
一开始没add之前,很多为Null 那么Ok 等他addChild(mc)之后,我再来一个断点
看到 里面有application = TestFlex@95db0a1 这个TestFlex就是我的swf了 然后就简单了 mc.application.show(); 还是报错 改一下 强制MovieClip(mc).application.show();
搞定 帅气!
赞 赞 赞 赞 赞
页:
[1]