ok, have flash browser application loads in child swf using loader object. thought adding mouse click listener loader object allow me listen clicks on object, doesn't. :/
i see clicked!!! being traced out when testing in ide (flash develop). however, when put in browser mouse handlers never called. know why happening?
also, trying access children of loader object results in security sandbox error.
public function main() { trace("starting..."); security.allowdomain('*'); security.allowinsecuredomain('*'); if (stage) init(); else addeventlistener(event.added_to_stage, init); } private function init(e:event = null):void { removeeventlistener(event.added_to_stage, init); // entry point var inputflashvars:object = this.loaderinfo.parameters _swfloader = new loader(); stage.addchild(_swfloader); _swfloader.contentloaderinfo.addeventlistener(event.complete, onswfloaded); var ldrcontext:loadercontext = new loadercontext(true); ldrcontext.checkpolicyfile = true; ldrcontext.applicationdomain = new applicationdomain(applicationdomain.currentdomain); //ldrcontext.applicationdomain = new applicationdomain(new applicationdomain()); var urlforvideotoplay:string = ad_swf_url; trace("loading swf: " + urlforvideotoplay + " click url: " + clickthrough_url); _swfloader.load(new urlrequest(urlforvideotoplay), ldrcontext); } private function onswfloaded(e:event):void { //var swfchild:* = _swfloader.getchildat(0); //_swfloader.mousechildren = false; trace(e.target); _swfloader.stage.addeventlistener(mouseevent.click, oninnerswfclicked, false); _swfloader.stage.addeventlistener(mouseevent.mouse_down, oninnerswfclicked, false); _swfloader.contentloaderinfo.removeeventlistener(event.complete, onswfloaded); trace("ad swf loaded!"); } private function oninnerswfclicked(e:event):void { trace("clicked!!!"); e.stopimmediatepropagation(); }
i think error comes click listeners, you're attaching them wrong stage object:
_swfloader.stage.addeventlistener(mouseevent.click, oninnerswfclicked, false); _swfloader.stage.addeventlistener(mouseevent.mouse_down, oninnerswfclicked, false); when load child swif in parent swif, stage points parent swif. works on debug mode because you're loading child swif without shell/parent.
try instead:
_swfloader.content.addeventlistener(mouseevent.click, oninnerswfclicked, false); _swfloader.content.addeventlistener(mouseevent.mouse_down, oninnerswfclicked, false);
Comments
Post a Comment