Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   обфускация swf Encrypt (http://www.flasher.ru/forum/showthread.php?t=146016)

Anry_coolboy 26.10.2010 14:52

обфускация swf Encrypt
 
Всем привет.

У меня есть два swf файла, первый - это лоадер, а второй - главный swf файлы который подгружается независимым лоадером.

Когда главная swf подгрузилась, я хочу получить flashvars.

написал вот так.
Код AS3:

var loader:Object = Object(parent)
var flashvars:Object = loader.flashvars.

где flashvars в лоадере, это public переменная котоая сохраняет туда loaderInfo.parameters

Вобщем до обфускации все работало отлично.
После того как обфусцировал главную swf с помощью Encrypt 5.0
вылитают ошибки что он не может найти свойство flashvars в моем лоадере, видать обфускатор поменял имя.

Потом написал вот так уже

Код AS3:

loader= (parent) as IBannerLoader;
flashVars = loader.getFlashVars();

думал увидет что метод и не будет менять ему имя... но все равно пишет что не может найти такого метода.

Как обойти это?

CrazyFlasher 26.10.2010 15:14

не использовать обфускацию :)

Anry_coolboy 26.10.2010 15:34

зачем писать такие ответы? Если не знаете, можно вобще не писать.

Если я использую, значит есть на то причины.

Psycho Tiger 26.10.2010 15:41

flashvars, э... вроде ведь stage.loaderInfo.parameters? Или я не о том?

Anry_coolboy 26.10.2010 16:07

я же писал, это просто переменная
Цитата:

flashvars в лоадере, это public переменная котоая сохраняет туда loaderInfo.parameters

cleptoman 26.10.2010 16:30

проблема вашего подхода в том, что вы не знаете кто такой parent и есть ли он вообще.(и я не думаю, что это связано с обфускацией)

отдиспатчите наверх событие, что хотите получить некие данные. наверху подумают, подумают и отдадут вам эти данные )

Anry_coolboy 26.10.2010 16:34

ну у меня в начале стоит проверка
Код AS3:

if(parent != stage)
{
  var loader:Object = Object(parent)
  var flashvars:Object = loader.flashvars.
}

без обфускации все работает. Мне просто не хочется что б верхний класс вызывал какие то методы в нижнем, потому что это просто прелоадер, и не хочется нагружать его логикой.

В API vkontakte, тоже так сделано, там получаешь wrapper = Object(parent.parent) и уже потом вытаскиваешь из него и флешварс и вызываешь разные методы

cleptoman 26.10.2010 16:39

я забил на вконтактовский application и сделал как говорит тигра - дергаю из стейджа и вся недолга

Psycho Tiger 26.10.2010 16:52

Anry_coolboy, дёргать parent у дисплей обджектов - дурной тон. А вот дёргать stage - нет. Проще говоря, чем Вам не угодил super.stage.loaderInfo.parameters? Попробуйте так.

P.S. если вопрос именно "почему" - то это баг криптера, очевидно.

Anry_coolboy 26.10.2010 16:52

ок, попробую вытянуть из стейджа, но все же проблема не решена.

Вдруг мне надо будет отправить другие данные.
Если я в главной swf сделаю метод что б передать данные, после обфускации прелоадер этот метод не находит.Точно так же и главная свф не видет методы прелоадера.

Добавлено через 1 минуту
Код:

Anry_coolboy, дёргать parent у дисплей обджектов - дурной тон.
Но почему же API Vkontakte так сделали, я думаю там тоже не дураки сидят....))


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

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