Открытие swf в swf.

Обсуждение и помощь по вопросам взаимодействия с ВКонтакте API в Flash-приложениях (ActionScript)
Blackfox
Сообщения: 24
Зарегистрирован: 21 янв 2011, 19:26

Открытие swf в swf.

Сообщение Blackfox »

Добрый день.
Требуется помощь. Вопрос касается загрузки swf через другое swf.
На основе уроков представленных здесь создал "Базовый" и два "подгружаемых" swf.
Базовый представляет из себя форму с двумя кнопками вызова подгружаемых, и двумя кнопками их удаления со сцены.
Подгружаемые маленькие приложения калькуляторы.
Код Базового:

Код: Выделить всё

btn2.label="Кг в Фунты";btn3.label="Вода";delete_btn.label="Убрать1";delete_btn2.label="Убрать2"; delete_btn.addEventListener(MouseEvent.CLICK, function () { removeChild(loader); });delete_btn2.addEventListener(MouseEvent.CLICK, function () { removeChild(loader2); }); var loader:Loader = new Loader();var loader2:Loader = new Loader(); btn2.addEventListener(MouseEvent.CLICK,btn22);        function btn22(e:MouseEvent):void {conn = new LocalConnection();var conn:LocalConnection;         conn.send('connectionName', 'Fukg');        var url='http://cs1375.vkontakte.ru/u47021982/32dd32ed7652d3.zip';// ссылка на загружаемый swf        var loadURL:URLRequest=new URLRequest(url);                loader.contentLoaderInfo.addEventListener(Event.COMPLETE,function(){           loader.x = 10; // координата x           loader.y = 20; // координата y           addChild(loader);        });        loader.load(loadURL);   }                        btn3.addEventListener(MouseEvent.CLICK,btn33);        function btn33(e:MouseEvent):void {            conn2 = new LocalConnection();var conn2:LocalConnection;         conn2.send('connectionName2', 'Voda');        var url='http://cs1375.vkontakte.ru/u47021982/0e09e31546faab.zip';// ссылка на загружаемый swf        var loadURL:URLRequest=new URLRequest(url);                loader2.contentLoaderInfo.addEventListener(Event.COMPLETE,function(){           loader2.x = 10; // координата x           loader2.y = 20; // координата y           addChild(loader2);        });        loader2.load(loadURL);   }
Код одного из подгружаемых:

Код: Выделить всё

var conn2:LocalConnection;conn2 = new LocalConnection();conn2.connect('connectionName2');  import fl.controls.RadioButtonGroup; text1.restrict = "0-9";var groupvoda:RadioButtonGroup = new RadioButtonGroup("My Question"); check1.group = groupvoda;check2.group = groupvoda;check3.group = groupvoda;  check1.label="Умеренные";check2.label="Средние";check3.label="Усиленные";  btn.label="Вычислить";btn.addEventListener(MouseEvent.CLICK, voda);  function voda (event:MouseEvent):void{ if (groupvoda.selection == null) {return;} if (groupvoda.selection.label == "Умеренные") {                var age=int(text1.text);        var val:int=age* 31;                var count2:String=String(val);         text2.text= count2;} if (groupvoda.selection.label == "Средние") {                var age1=int(text1.text);        var valq:int=age1* 37;                var count22:String=String(valq);                text2.text= count22;} if (groupvoda.selection.label == "Усиленные") {                var age2=int(text1.text);        var valw:int=age2* 41;                var count222:String=String(valw);         text2.text= count222;}}  
Вроде бы всё хорошо но при отзыве со сцены любого из подгружаемого и призыве назад, загружается только форма подгружаемого без функций в нём.
Как это исправить, какие я допустил ошибки?
P.S. учу флеш только 2 месяц, сильно не ругайте.
Ссылка на исходники +скриншот проблемы http://depositfiles.com/files/5ihrba3q6
Аватара пользователя
krivtsov
Сообщения: 11
Зарегистрирован: 14 янв 2011, 19:56

Re: Открытие swf в swf.

Сообщение krivtsov »

По чему же эти маленькие приложения в одно большее не вместить? Без какой либо подгрузки? Зачем вам этот геморой?
Посмотрел код и мне вообще не понятно как загружает loader zip. Вроде только *.swf, *.png, *.jpg и еще несколько форматов изображений, но не архивы.
Может вы просто о печатались, ведь иначе быть не может.
Blackfox
Сообщения: 24
Зарегистрирован: 21 янв 2011, 19:26

Re: Открытие swf в swf.

Сообщение Blackfox »

Сам контакт swf в zip превращает. Я не знаю для чего они так делают, но всё там правильно.
Аватара пользователя
krivtsov
Сообщения: 11
Зарегистрирован: 14 янв 2011, 19:56

Re: Открытие swf в swf.

Сообщение krivtsov »

Лучше бы вы все-таки написали весь код в классах, а потом просто, когда нужно, добавляли свои калькуляторы на стейдж. Сами калькуляторы по коду очень простенькие, смысла их компилить в отдельные swf мало, или уже в крайнем случае зашить в главный swf как массив байт а потом загрузить их лоадером. Повторяю, гемморойно очень все это с подгрузкой. Делаете тройное сальто, что бы просто добавить мини-приложение на сцену.
И в коде высмотрел, что при нажатие на кнопку btn2 после удаления со сцены лоадера все загружается заново, зачем - хрен его знает. Везде где только можно анонимно подписались на событие, анонимные функции - зло. Компоненты для флеш - говно в принципе. Не зря пишут свои. Бредовый быдло-код вообщем - по другому и не скажешь. Читайте Мука, читайте хелп и справку по классом. Рано вам приложения писать для Вконтакте.
Аватара пользователя
bodnar
Модератор
Модератор
Сообщения: 1399
Зарегистрирован: 03 апр 2010, 06:41

Re: Открытие swf в swf.

Сообщение bodnar »

krivtsov
zip прекрасно читается flash плеером
Аватара пользователя
krivtsov
Сообщения: 11
Зарегистрирован: 14 янв 2011, 19:56

Re: Открытие swf в swf.

Сообщение krivtsov »

bodnar писал(а):krivtsov
zip прекрасно читается flash плеером
Покажите пальцем, где о zip в документации написано. Мне бы было интересно почитать.
Аватара пользователя
psix55
Модератор
Модератор
Сообщения: 1015
Зарегистрирован: 09 дек 2009, 17:16

Re: Открытие swf в swf.

Сообщение psix55 »

krivtsov писал(а):
bodnar писал(а):krivtsov
zip прекрасно читается flash плеером
Покажите пальцем, где о zip в документации написано. Мне бы было интересно почитать.
А что читать? В документации не всегда все есть..)
Ты попробуй...
Я проверял, всё прекрасно работает...
Аватара пользователя
krivtsov
Сообщения: 11
Зарегистрирован: 14 янв 2011, 19:56

Re: Открытие swf в swf.

Сообщение krivtsov »

psix55, тогда попробуйте создать zip-архив с изображением или наконец *.swf, напишите небольшой кусок кода, который загрузит ваш zip с внутренностями. Код вроде этого:

Код: Выделить всё

 function loadImage (  ):void {    var loader:Loader = new Loader( );    loader.load( new URLRequest("test.zip") );    loader.contentLoaderInfo.addEventListener( Event.INIT, initHandler ); } function initHandler( e:Event ):void{    var loader:Loader = Loader( e.target.loader );    loader.contentLoaderInfo.removeEventListener( Event.INIT, initHandler );    loader = null;  } 

Используйте только стандартное апи флеш плеера. Если флешка скушает zip - тогда вам повезло больше меня, потому что я загрузить zip не смог.
Контакт выплювывает нам ссылку на swf с как бы расширением файла - zip (это скорее кодеры вконтакте что-то придумали этакое с загрузкой swf ), но это не значит что флеш плеер может загружать zip-архив, для их загрузки написаны специальные библиотеки ибо другого выхода загрузить zip нет.
Самому очень интересно, что представляет из себя эта ссылка. И вообще документацию (в данном случаи по АПИ Флеш ) пишут для, что бы разработчикам было ясно с чем они работают, то есть что их классы из себя представляют. В адобе на флеш апи отличная документация. И они сами понимают, что чем больше качественной информации предоставляют разработчику, тем больше успех их платформы. Это касается и библиотек, какие пишутся флешерами. То есть чем лучше документация - тем больше внимание уделил разработчик своей библиотеки, а значит что код этой библиотеки будет хорошего качества. Ну вообщем это такое себе отступление от темы спора. Просто я в первую очередь смотрю в документацию.
Аватара пользователя
bodnar
Модератор
Модератор
Сообщения: 1399
Зарегистрирован: 03 апр 2010, 06:41

Re: Открытие swf в swf.

Сообщение bodnar »

krivtsov голову не морочьте, говорится о том, что не важно какое расширение имеет файл, если это по сути является флешкой. Берем любую swf-ку, меняем на zip или на huip или еще на что нибудь > открыть как ... работает.

Расширение нужно лишь для автоматического определения типа файла, без участия пользователя, чтобы выбрать программу. а когда программа выбрана, её как то наплевать на то zip это или swf.

И тема вообще не об этом.
Аватара пользователя
krivtsov
Сообщения: 11
Зарегистрирован: 14 янв 2011, 19:56

Re: Открытие swf в swf.

Сообщение krivtsov »

bodnar писал(а):krivtsov голову не морочьте, говорится о том, что не важно какое расширение имеет файл, если это по сути является флешкой. Берем любую swf-ку, меняем на zip или на huip или еще на что нибудь > открыть как ... работает.

Расширение нужно лишь для автоматического определения типа файла, без участия пользователя, чтобы выбрать программу. а когда программа выбрана, её как то наплевать на то zip это или swf.

И тема вообще не об этом.
Вы только в этом сообщении написали что имели ввиду под zip. В предыдущем сказали что лишь флеш плеер работает отлично с zip, что еще остается думать. Если о случаи с переименованием - то вы правы, так как флеш читает заголовок файла и не обращает внимания на расширение.
Но зачем Вконтакте меняет расширение на zip - непонятно. bodnar может вы знаете.
Ответить