Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Как написать собственный флеш-профайлер? (http://www.flasher.ru/forum/showthread.php?t=187253)

SunnyDay 16.11.2012 12:32

Как написать собственный флеш-профайлер?
 
День добрый флешеры! Недавно встала проблемма с управлением любыми флешками в web-страницах из фаерфокс-расширения. Сначала я попробовал использовать flashfirebug , который работает так:
1. В файл mm.cfg он записывает путь до sfw-приложения, которое будет стоять над всеми флешками.
2. Далее в этой флешке ( flashfirebug.swf ) для всех DOM-элементов, отображающих флеш (embed, object) добавляются методы flashfirebug_start, flashfirebug_stop, flashfirebug_send - после этого, я могу используя метод flashfirebug_send получить любые данные из флешки, соблюдая особый язык запросов.

И я бы так и пользовался профайлером flashfirebug.swf , но с ним возникают определённые проблеммы:
1. Флеш начинает часто падать в фаерфоксе.
2. flashfirebug.swf всё таки с лицензией, и распостранять плагин по пользователям с flashfirebug.swf внутри нельзя.
3. Медленная скорость работы флешфаербага.

Теперь вопрос - как написать собственный флеш-профайлер? Буду очень признателен за любые статьи, и особенно примеры. Из функционала мне необходимо единственное что - посылать во флеш произвольный eval и получать его результат. Непонятно, как для DOM-элементов (embed, object) добавить метод из такого профайлера. Но первое что непонятно - это структура такого swf-приложения как профайлер, и зачем оно вообще в теории нужно кроме как для использования браузерами в качестве бэкдора?)

Aquahawk 16.11.2012 13:12

http://help.adobe.com/ru_RU/FlashPla...ge-detail.html

SunnyDay 16.11.2012 14:21

Цитата:

Сообщение от Aquahawk (Сообщение 1104684)

Спасибо конечно. Но нужно немного не то, если спросить конкретнее:
Как допилить вот этот код:
Код AS3:

    package  
    { 
        import flash.display.LoaderInfo; 
        import flash.display.Sprite; 
        import flash.display.Stage; 
        import flash.events.Event; 
 
        public class PreloadSwf extends Sprite 
        { 
            public function PreloadSwf():void 
            { 
                addEventListener("allComplete", allComplete)
            } 
 
            private function allComplete(e:Event):void 
            { 
                removeEventListener("allComplete", allComplete)
 
                var info:LoaderInfo = e.target as LoaderInfo; 
                trace(info.url, "is being monitored")
 
                // now let the fun begin! try: 
                // info.content 
                // info.content.stage 
                // info.parameters 
                // info.applicationDomain 
                // info.bytes 
            } 
        } 
    }

отсюда ( http://philippe.elsass.me/2010/09/as...un-and-profit/ ) , чтобы для всех DOM-элементов embed и object при установленном в mm.cfg профайлере добавлялся мой собственный метод - например my_eval - который мог бы отправлять и получать команды из AS3-флешки прямым выполнением AS-кода.

Либо второй варик - не через свой метод DOM элемента, а через доступ к профайлеру через JS каким либо образом, в таком случае я не понимаю - к чему обращаться из JS..

maxkar 16.11.2012 17:06

Цитата:

Непонятно, как для DOM-элементов (embed, object) добавить метод из такого профайлера.
А это не из профайлера делается. Это из firefox-плагина делается. Т.е. при загрузке страницы firefox-плагин слушает события загрузки и добавляет методы flashfirebug_start к embed/object. Вероятно, еще флаги изменяет (включает external interface). Это plugin api от firefox и никакого отношения к AS3 и ко флеш не имеет. А дальше загруженный профайлер через external interface общается с нагенеренным javascript-кодом. Вероятно, регистрирует callback'и и т.п. Вы точно так же можете из своего профайлера зарегистрировать через external interface js-callback и вызывать потом его из js.

SunnyDay 19.11.2012 10:23

Цитата:

Сообщение от maxkar (Сообщение 1104739)
А это не из профайлера делается. Это из firefox-плагина делается. Т.е. при загрузке страницы firefox-плагин слушает события загрузки и добавляет методы flashfirebug_start к embed/object. Вероятно, еще флаги изменяет (включает external interface). Это plugin api от firefox и никакого отношения к AS3 и ко флеш не имеет. А дальше загруженный профайлер через external interface общается с нагенеренным javascript-кодом. Вероятно, регистрирует callback'и и т.п. Вы точно так же можете из своего профайлера зарегистрировать через external interface js-callback и вызывать потом его из js.

Спасибо. Не, в фаерфоксе только вызовы этих методов - грепал код. Но объявляются они действительно с помощью External Interface. Правда пока что при попытке вызова кидает в JS "Error in Actionscript. Use a try/catch block to find error." . Разбираюсь пока что, ибо флешер из меня не ахти)


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

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