Страница 1 из 2

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

Добавлено: 30 янв 2011, 22:45
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

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

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

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

Добавлено: 01 фев 2011, 22:29
Blackfox
Сам контакт swf в zip превращает. Я не знаю для чего они так делают, но всё там правильно.

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

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

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

Добавлено: 02 фев 2011, 08:21
bodnar
krivtsov
zip прекрасно читается flash плеером

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

Добавлено: 02 фев 2011, 19:55
krivtsov
bodnar писал(а):krivtsov
zip прекрасно читается flash плеером
Покажите пальцем, где о zip в документации написано. Мне бы было интересно почитать.

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

Добавлено: 02 фев 2011, 20:50
psix55
krivtsov писал(а):
bodnar писал(а):krivtsov
zip прекрасно читается flash плеером
Покажите пальцем, где о zip в документации написано. Мне бы было интересно почитать.
А что читать? В документации не всегда все есть..)
Ты попробуй...
Я проверял, всё прекрасно работает...

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

Добавлено: 03 фев 2011, 03:13
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 нет.
Самому очень интересно, что представляет из себя эта ссылка. И вообще документацию (в данном случаи по АПИ Флеш ) пишут для, что бы разработчикам было ясно с чем они работают, то есть что их классы из себя представляют. В адобе на флеш апи отличная документация. И они сами понимают, что чем больше качественной информации предоставляют разработчику, тем больше успех их платформы. Это касается и библиотек, какие пишутся флешерами. То есть чем лучше документация - тем больше внимание уделил разработчик своей библиотеки, а значит что код этой библиотеки будет хорошего качества. Ну вообщем это такое себе отступление от темы спора. Просто я в первую очередь смотрю в документацию.

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

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

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

И тема вообще не об этом.

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

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

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

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