![]() |
|
||||||||||
|
|||||
|
Регистрация: Sep 2012
Сообщений: 8
|
Добрый день! Есть проект в FD, который должен найти в загружаемой swf-ке нужные мне экземпляры класса WordChoice:
public class Main extends MovieClip { private var ldr:Loader; private var wC:Array = []; public function Main():void { 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 ldr = new Loader(); var urlReq:URLRequest = new URLRequest("../swf/testPattern.swf"); ldr.contentLoaderInfo.addEventListener(Event.COMPLETE, loadComplete); ldr.load(urlReq); addChild(ldr); } private function loadComplete(e:Event):void { var obj:Object = e.target.content as Object; for (var i:uint = 0; i < obj.numChildren; i++) { if (obj.getChildAt(i) is WordChoice) { wC.push(obj.getChildAt(i)); } } trace(wC.length); } } Ищу решение проблемы 4й день, уже зашел в тупик. |
|
|||||
|
можно для начала убрать проверку is WordChoice и проверить что туда вообще попадает
и вообще сначала проверить сколько там детей Так же может быть что секьюрити сендбокс у подружаемого файла другой |
|
|||||
|
Регистрация: Sep 2012
Сообщений: 8
|
Цитата:
"Сигнатуры методов" это что? Вообще вод код WordChoice: package { import flash.display.MovieClip; public class WordChoice extends MovieClip { private var truth:Boolean = false; public function WordChoice() { } [Inspectable(defaultValue=false,type=Boolean)] public function set TruthValue(t:Boolean):void { truth = t; } public function get TruthValue():Boolean { return truth; } } } Цитата:
PS вообще, может это важно, загружаемая testPattern.swf сделана в Flash CS6 |
|
|||||
|
[+1 05.11.12]
Регистрация: Feb 2011
Сообщений: 431
|
Подгружающей флэшке должен быть доступен класс WordChoice. Она не может определить ваш объект как инстанс WordChoice потому что она не знает что это такое. Скопипастите WordChoice в проект вашей флэшки так, чтобы package совпадал с package подгружаемого WordChoice, а если проекты находятся рядом, укажите через ClassPath путь к подгружаемому WordChoice.
|
|
|||||
|
Регистрация: Sep 2012
Сообщений: 8
|
Main.as и WordChoice.as лежат в одной папке src проекта, FD "знает" что такое WordChoice (выделяет его синим).
|
|
|||||
|
[+1 05.11.12]
Регистрация: Feb 2011
Сообщений: 431
|
Ну раз у ваших знакомых всё работает, возможно у них настройки компилятора отличаются?
Насколько я знаю настройки которые вы делаете в FD остаются в файле проекта, может вы или они в конфиге что-то (не)прописали? |
|
|||||
|
Скорее securitySandBox отличается (хотя утверждать на 100% не могу). Надо флешку подкгружать в тот же секьюрити сендбокс, прописав его в контекст загрузки. Если это локальные тесты, без сервера, то обе флешки должны находиться в песочнице localTrusted
Проще говоря при загрузке добавить флешке контекст У меня этот способ работает. Файлы грузятся с удаленного сервера, и определяются по интерфейсу. Которые, без указания контекста при загрузке, не хочет признаваться "родным", хотя он есть в подгружающей флешке. |
|
|||||
|
Регистрация: Sep 2012
Сообщений: 8
|
Попробовал переписать так:
public class Main extends MovieClip { private var ldr:Loader; private var wC:Array = []; public function Main():void { 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 ldr = new Loader(); var urlReq:URLRequest = new URLRequest("../swf/testPattern.swf"); ldr.contentLoaderInfo.addEventListener(Event.COMPLETE, loadComplete); if (Security.sandboxType == Security.REMOTE) { var context:LoaderContext = new LoaderContext(); context.applicationDomain = new ApplicationDomain(ApplicationDomain.currentDomain); ldr.load(urlReq, context); } else { ldr.load(urlReq); } addChild(ldr); } private function loadComplete(e:Event):void { var obj:Object = e.target.content as Object; for (var id:uint = 0; id < obj.numChildren; id++) { if (obj.getChildAt(id) is WordChoice) { wC.push(obj.getChildAt(id)); } } trace(wC.length); } } |
![]() |
![]() |
Часовой пояс GMT +4, время: 17:55. |
|
|
« Предыдущая тема | Следующая тема » |
|
|