Привет хабралюди.
Помогите решить проблему, бьюсь уже часа три, не меньше.
Что хочу сделать?
Хочу сделать некий wrapper.
Т.е. флешка грузит еще одну флешку внутрь себя, далее идет работа с подгруженной флешкой (addChild, интерактив).
Использую следующий код в wrapper'е:
public function Main():void <br/>
{<br/>
if (stage) init();<br/>
else this.addEventListener(Event.ADDED_TO_STAGE, init);<br/>
}<br/>
<br/>
public function init(event:Event = null):void<br/>
{<br/>
this.removeEventListener(Event.ADDED_TO_STAGE, init);<br/>
<br/>
stage.dispatchEvent(new Event(Event.DEACTIVATE)); <br/>
stage.dispatchEvent(new Event(Event.ACTIVATE));<br/>
<br/>
<br/>
loadExeption();<br/>
}<br/>
<br/>
public function loadExeption():void<br/>
{<br/>
<br/>
Security.allowDomain("*"); <br/>
Security.allowInsecureDomain("*");<br/>
<br/>
loaderContext = new LoaderContext();<br/>
loaderContext.checkPolicyFile = true;<br/>
<br/>
if (Security.sandboxType != 'localTrusted') <br/>
{<br/>
loaderContext.applicationDomain = ApplicationDomain.currentDomain;<br/>
loaderContext.securityDomain = SecurityDomain.currentDomain;<br/>
}<br/>
<br/>
m_loader = new Loader();<br/>
m_loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onCompleteHandler);<br/>
<br/>
m_loader.load(new URLRequest("xxx.ru/my.swf"), loaderContext);<br/>
}<br/>
<br/>
public function onCompleteHandler(e:Event):void<br/>
{<br/>
addChild(m_loader);<br/>
}
Вроде все правильно, ошибок при компиляции нет, realtime ошибок тоже.
А что не так?
А не так то, что это все не работает. После запуска такого кода флеш начинает жестоко личить в память, и складывается ощущение, что он загружает сам себя.
Адрес wrapper'a (Preloader'a): xxx.ru/preloader.swf (условно).
Адрес подгружаемой swf-шки: xxx.ru/my.swf (условно).
Лежат на одном домене, с ними рядом лежит:
crossdomain.xml, листинг:
<cross-domain-policy><br/>
<site-control permitted-cross-domain-policies="master-only"/><br/>
<allow-http-request-headers-from domain="xxx.ru" headers="*"/><br/>
<allow-access-from domain="xxx.ru" to-ports="80"/><br/>
</cross-domain-policy>
Использую swfobject.js, в index.html (index.php) кусок кода, ответственный за флешку:
...<br/>
var params = {<br/>
menu: "false",<br/>
scale: "noScale",<br/>
allowFullscreen: "true",<br/>
allowScriptAccess: "always",<br/>
allowNetworking: "always",<br/>
bgcolor: "#000000"<br/>
};<br/>
...<br/>
swfobject.embedSWF("preloader.swf", "altContent", "600", "580", "10.0.0", "expressInstall.swf", flashvars, params, attributes);<br/>
У второй флешки есть событие added_to_stage, костыль с активацией/деактивацией.
Самое интересное, что локально это все работает нормально.
Т.е. заливаю на хостинг my.swf, локально компилирую preloader.swf — работает на ура. Как стоит мне залить preloader.swf на хостинг, то возникает такая ситуация. Сталкивался кто?