2017-01-17 8 views
0

Я создаю приложение, использующее flash cc. В приложении мне нужно загрузить внешние swf-файлы, которые являются кучей игр. Мне нужно, чтобы swf-файлы читали собственное имя. Я использовалmake swf читайте его собственное имя

var swfName:String = decodeURIComponent(this.loaderInfo.url.split("/").pop()) код для чтения его названия. Оно работает. Но проблема с моим приложением была размером. Поэтому мне пришлось исключить внешний файл swf из apk и загрузить его с SD-карты. Проблема с этим была ошибкой песочницы. Поэтому я использовал byteArray и loaderContext для обхода ошибки песочницы. Он отлично работает, но теперь swf-файлы не читают собственное имя файла, а вместо этого читают имя приложения. В любом случае, я могу заставить swf-файлы читать свое имя при загрузке с помощью byteArray? Любая помощь будет большой. Заранее спасибо.

ответ

0

Объект Loader является родительским документом для корневого каталога загруженного содержимого. Передайте, что вы хотите в собственности Loader.name:

var aLoader:Loader; 
var aSource:ByteArray; 

aLoader = new Loader(); 
aLoader.name = "foo.swf"; 
aLoader.loadBytes(aSource); 

Затем в корневом каталоге документов внешнего SWF (класс или кадра, не имеет значения):

trace(parent);  // [object Loader] 
trace(parent.name) // foo.swf 
+0

Спасибо за ответ. Но мне нужен swf-файл, чтобы прочитать его собственное имя для перекрестной проверки и некоторой цели безопасности. Не может ли он прочитать собственное имя файла? – TheGunners

+0

В обход безопасности ** есть **, почему вы так делаете. В контент не включено имя файла. Вы можете загрузить откуда-нибудь его или вы можете записать его byte by byte в свой ByteArray во время выполнения, это все равно. – Organis

+0

Вы можете узнать, можете ли вы загружать файлы из файла File.applicationStorageDirectory, чтобы избежать ошибки в песочнице (я не могу гарантировать, что это сработает), тогда вы можете скопировать файлы из внешней папки, где вы их храните. – Organis