Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Выполнение функции из внешнего SWF упаковнное crossbridge (http://www.flasher.ru/forum/showthread.php?t=213776)

HuoHu 11.01.2017 06:26

Выполнение функции из внешнего SWF упаковнное crossbridge
 
Дорое время суток, есть внешний SWF (External.swf) в котором есть класс CalculateResult
и сама функция расчета в классе импортируется... сделана на др. языке(я так понимаю) с помощью crossbridge.

если подргужаю к себе как класс, то импорты там не работают
Код AS3:

XXX = Class(ldr.contentLoaderInfo.applicationDomain.getDefinition("com.blablabla.CalculateResult"));
var _obj = new XXX();

и так же если погружаю только функцию
Код AS3:

MyCalc:Object = ldr.contentLoaderInfo.applicationDomain.getDefinition("Bla.Xxxx.Calc");


Просьба помочь советом как можно запустить расчет Calc или вытащить функционал упакованный crossbridge.

caseyryan 11.01.2017 09:17

Могу предположить, что этот внешний SWF сначала грузится как байт массив (или уже вшит), а потом грузится через loadBytes() (ибо других способов я не знаю)
Можно попробовать подсунуть ему контекст загрузки вот такой:
Код AS3:

var context = new LoaderContext(true, new ApplicationDomain(ApplicationDomain.currentDomain), SecurityDomain.currentDomain);
 
// а потом загрузить с контекстом
loader.loadBytes(externalBytes, context);

Не уверен, что прокатит для SWF сделанного через cross bridge, но для обычных работает, так что можно и для этого попробовать

HuoHu 11.01.2017 17:12

проверил лоадер, да действительно через loadBytes() . Спасибо большое за оперативный ответ-совет.

Upd:
переписал загрузку через loadBytes(). Увы результат такой же... импорты не прогружаются и соотв вылетают ошибки.

caseyryan 11.01.2017 17:31

Цитата:

импорты не прогружаются и соотв вылетают ошибки.
О каких именно импортах идет речь? Может там должна быть еще какая-то либа?

HuoHu 11.01.2017 17:57

Цитата:

Сообщение от caseyryan (Сообщение 1198499)
О каких именно импортах идет речь? Может там должна быть еще какая-то либа?

Образно еще раз, в External.swf есть класс CalculateResult, но сама функция-считалка Calc вынесена отдельно и в класс CalculateResult добавляется через import Bla.Xxxx.Calc

при попытке подгрузить к себе получаю примерно подобное Error #1069: Property Calc not found on CalculateResult

Wolsh 11.01.2017 18:31

import это директива компилятору, где (в какой папке на компьютере) искать файл с описанием класса (или в данном случае функции) чтобы вкомпилировать его в собираемый ролик swf. Тот факт, что импорт написан в классе CalculateResult, никоим образом не означает, что Calc является членом CalculateResult — это по-прежнему самостоятельная сущность. К слову сказать, если она упоминается ТОЛЬКО в импорте и больше нигде, то компилятор ее просто не включит в ролик за ненадобностью. В любом случае, Вам не добраться до нее через CalculateResult, они никак не связаны. Пробуйте более настойчиво через Bla.Xxxx.Calc.

HuoHu 11.01.2017 18:51

сам Calc написан и вндрен через crossbridge и соотв. там тянет еще кучу всего за собой. В общем способ подгрузки к себе не сработает тогда. Буду думать как реализовать эту считалку на базе родного приложения подменой модулей на свои

undefined 11.01.2017 19:18

для включения сущности в swf достаточно ее просто упомянуть где-либо в коде, не важно где и как.Просто проверь, что в твоем CalculateResult есть хоть одно упоминание Calc кроме как в импорте.

HuoHu 12.01.2017 21:22

Цитата:

Сообщение от undefined (Сообщение 1198506)
для включения сущности в swf достаточно ее просто упомянуть где-либо в коде, не важно где и как.Просто проверь, что в твоем CalculateResult есть хоть одно упоминание Calc кроме как в импорте.

в том то и дело что есть... тихо начинаю ненавидеть этот crossbridge)))


Часовой пояс GMT +4, время: 03:02.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.