Вы не можете заменить url текстом без какого-либо протокола, подобного этому, потому что php - серверный язык сценариев, он может влиять только на браузер.
Получил его.
Проблема была вызвана другим поведением в SecurityDomain
система в рамках приложения AIR. Когда файл SWF загружается в рамках приложения AIR, он всегда зависит к другой песочнице. Таким образом AIR создает новое SecurityDomain
для этого SWF.
С тех пор a SecurityDomain
группа одного или нескольких ApplicationDomain
s, это поведение вызвало создание нового ApplicationDomain
(в новом SecurityDomain
), игнорируя указанный (которые принадлежат 'основному' SecurityDomain
).
Существует использование обходного решения URLLoader
. При загрузке из байт-кода (использование Loader.loadBytes
), SWF загружается в том же SecurityDomain
. Поэтому необходимо поместить allowLoadBytesCodeExecution
к истинному, так как это может быть небезопасно. Так загружая SWF косвенно, сначала хотя URLLoader
, и затем с Loader.loadBytes
, решите эту проблему.
Вот отрывок:
package {
import flash.display.Loader;
import flash.display.LoaderInfo;
import flash.display.Sprite;
import flash.events.Event;
import flash.net.URLLoader;
import flash.net.URLLoaderDataFormat;
import flash.net.URLRequest;
import flash.system.ApplicationDomain;
import flash.system.LoaderContext;
import flash.utils.ByteArray;
public class Invoker extends Sprite
{
public function Invoker()
{
var uldr : URLLoader = new URLLoader();
uldr.dataFormat = URLLoaderDataFormat.BINARY;
uldr.addEventListener(Event.COMPLETE, onBytesComplete);
uldr.load(new URLRequest("otherSwf.swf"));
}
private function onBytesComplete(e : Event) : void
{
var bytes : ByteArray = (e.target as URLLoader).data;
var ldr : Loader = new Loader();
ldr.contentLoaderInfo.addEventListener(Event.COMPLETE, onChildComplete);
var ldrC : LoaderContext = new LoaderContext();
// This property was for AIR 1.0.
//ldrC.allowLoadBytesCodeExecution = true;
// Since AIR 2.0, it's allowCodeImport.
ldrC.allowCodeImport = true;
ldr.loadBytes(bytes, ldrC);
}
private function onChildComplete(e : Event) : void
{
var c1ad : ApplicationDomain = (e.target as LoaderInfo).applicationDomain;
var inad : ApplicationDomain = ApplicationDomain.currentDomain;
trace("Child One parentDomain : " + c1ad.parentDomain);
trace("Invoker parentDomain : " + inad.parentDomain);
trace("Child One has Invoker : " + c1ad.hasDefinition("Invoker"));
trace("Invoker has Invoker : " + inad.hasDefinition("Invoker"));
}
}
}
Надеюсь, это поможет.