![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|
|
|||||
|
Регистрация: Feb 2009
Сообщений: 23
|
Я конечно дико извиняюсь, что решил поднять такую детскую тему и понимаю что ей здесь не место
.Если вы ни принимаете мои извинения тогда можете её удалить. ![]() Ну а если принимаете тогда поехали: Как известно любой простецкий сайт во флеше да и в большинстве случаев любой флешовский сайт это флеш ролик с навигацией из кнопок при нажатии на которые в него подгружаются друие ролики. (мде загнул ) И так на основной сцене главного мувика. Моожно все "разукрасить" напихать кнопки с навигацией. Создать подгружаемые мувики. Вот все это я сделал а дальше идет вопрос.Тут в скрипте я начал эксперементировать сподружаемыми мувиками (т.е. страницы : новости, о компании, контакты и т.д.). Так вот меня интересует нужно ли для каждого подгружаемого мувика объявлять переменную? И для оптимизации сайта как лучше сделеать при переходе с странички на страничку лучше делать уже загруженные странички невидимыми, чтобы потом их не пршлось загружать или их отгружать а потом при переходе (нажатии на кнопку) опять загружать? Если в первом случае есть какие-то мысли ..как написать условия для видимости. Или если ыторой способ лучше то чем. Будут ли загруженные ролики храниться в темпрари. В общем если вам не понятен мой безумный ббред и вся лирика то скажите как бы сделали вы и если есть исходный код в ас3 поделитесь кому не жалко) А если там будет прелоадер то вообще замечательно) Когда протрезвею))) объясню все по полочкам) ![]() package script { import flash.events.*; import flash.display.*; import flash.net.URLRequest; public class menu extends MovieClip { private var loader:Loader;//Обьявляем переменную private var loader1:Loader;//Обьявляем переменную public function menu(){ stop(); //------- Обработчик вызывает ф-ю при нажатии in_news.addEventListener(MouseEvent.CLICK, clickListener); //------- stt- инстанс кнопки //stt2.addEventListener(MouseEvent.CLICK, clickListener2); } private function clickListener(e:MouseEvent):void{ var url:URLRequest=new URLRequest("pages/f_news.swf");//Определяем положение файла loader=new Loader();//Создаем экземпляр класса Loader loader.x=200; loader.y=300; addChild(loader); loader.load(url);//Начинаем загрузку } /* private function clickListener2(e:MouseEvent):void{ var url:URLRequest=new URLRequest("SimpleClockApp.swf");//Определяем положение файла loader1=new Loader();//Создаем экземпляр класса Loader loader1.x=500; loader1.y=400; addChild(loader1); loader1.load(url);//Начинаем загрузку loader.visible=false; q4.play(); krr.play();} */ } } Вот переработанный код... package script { import flash.events.*; import flash.display.*; import flash.net.URLRequest; public class menu extends MovieClip { private var l_News:Loader; private var l_Service:Loader; private var l_Contact:Loader; private var l_Group:Loader; public function menu(){ stop(); //------- Обработчик событий in_news.addEventListener(MouseEvent.CLICK, news_cListener); in_service.addEventListener(MouseEvent.CLICK, service_cListener); in_contact.addEventListener(MouseEvent.CLICK, contact_cListener); in_group.addEventListener(MouseEvent.CLICK, group_cListener); } private function news_cListener(e:MouseEvent):void{ var url:URLRequest=new URLRequest("pages/f_news.swf"); l_News=new Loader(); l_News.x=200; l_News.y=300; addChild(l_News); l_News.load(url); } private function service_cListener(e:MouseEvent):void{ var url:URLRequest=new URLRequest("pages/f_service.swf"); l_Service=new Loader(); l_Service.x=200; l_Service.y=300; addChild(l_Service); l_Service.load(url); } private function contact_cListener(e:MouseEvent):void{ var url:URLRequest=new URLRequest("pages/f_contact.swf"); l_Contact=new Loader(); l_Contact.x=200; l_Contact.y=300; addChild(l_Contact); l_Contact.load(url); } private function group_cListener(e:MouseEvent):void{ var url:URLRequest=new URLRequest("pages/f_group.swf"); l_Group=new Loader(); l_Group.x=200; l_Group.y=300; addChild(l_Group); l_Group.load(url); } } } Выглядит очень некрасиво. При том при нажатии на кнопки страница подгружается повторно(. И вообще интересно что лучше помещать в ад чайлд переменную или её контент...Черт выглядит как-то топорно.(( Добавлено через 3 часа 8 минут покачто... остановился на том чтобы лучший метод это загружать страницы не выгружая их при загрузки новой. Для небольшого сайта это лучше, тем более не уверен остаются ли подргружаемые файлы во временных файлах....поправте меня если я не прав. Добавлено через 3 часа 9 минут покачто... остановился на том чтобы лучший метод это загружать страницы не выгружая их при загрузки новой. Для небольшого сайта это лучше, тем более не уверен остаются ли подргружаемые файлы во временных файлах....поправте меня если я не прав. Добавлено через 3 часа 11 минут Теперь надо сделать так чтобы проверялось условие: если страница уже загружена при переходе на другую страницу она становилась невидимой. |
|
|||||
|
strange mood
|
Модули лучше выгружать, тк они занимают память и могут грузить порц "забытыми" listener'ами. В любом случае после первой загрузки они останутся в кэше браузера, и после этого не будут скачиваться повторно.
Если же очень хочется держать модули в памяти, то просто делаем ссылки на них и флаги загрузки, а в обработчике проверяем, загружен ли модуль, и если загружен, то берём его по соответствующей ссылке, иначе грузим, запоминаем ссылку и выставляем флаг что модуль загружен.
__________________
тонкий тролль, осеянный благодатью |
|
|||||
|
Регистрация: Feb 2009
Сообщений: 23
|
О спс гайкер очень толково объяснил. Но я не совсем понял что значит "забытые" лисенеры? Хотелось бы знать интересно все ли браузеры нормально работают с флешем и кешируют его. Если так то работа упрощается. (Тогда интересует вопрос можно ли как-нибудь ухещириться и написать одну функцию обработки нажатия, а не для каждой кнопки в отдельности?)
Я вот уже начал пробовать делать второй вариант(там будет при переходе на другую страницу, ранее загруженные страницы будет становиться невидимыми. Когда код допишу выложу. Вообще просто хочу в этом посте более и менее разобраться как грамотно делаются сайты на флеше при этом используя АС3, тем более нигде описания толкового не нашел, а нормальных темплейтов с АС3 днем с огнем не сыщешь. |
|
|||||
|
Регистрация: Mar 2007
Сообщений: 5
|
Цитата:
В общем, под каждую конкретную задачу находится своё решение и описанный выше вариант может не подойти для конкретного проекта. |
|
|||||
|
strange mood
|
По поводу единой функции обработки. Суть в том, чтобы засунуть все кнопки в один мувик и подписаться один раз на его MouseEvent.CLICK вместо того, чтобы подписываться на каждую кнопку. Это удобно, тк при дальнейшем добавлении новой кнопки событие от неё сразу будет долетать до обработчика, и нужно будет только прописать для неё действие.
В вашем случае имеет смысл сделать класс для пункта меню, который будет хранить путь к файлу, который нужно подгрузить. Тогда обработчик действительно будет единым, без всяких ветвлений для каждой кнопки.
__________________
тонкий тролль, осеянный благодатью |
|
|||||
|
Регистрация: Feb 2009
Сообщений: 23
|
Если я правильно понял всю логику то MenuItem это название мувика куда запихнуты кнопки и для этого же мувика создаем класс тогда у меня получается:
package script { import flash.events.*; import flash.display.*; import flash.net.URLRequest; public class menu extends MovieClip { private var l_Menu:Loader; public function menu(){ stop(); //------- Обработчик событий inMenu.addEventListener(MouseEvent.CLICK, Menu_cListener); } private function Menu_cListener(e:MouseEvent):void{ var url:URLRequest=new URLRequest((e.target as MenuItem).contentPath); //var url:URLRequest=new URLRequest("pages/f_news.swf"); //if (l_Menu==null){ // l_Menu=new Loader(); // l_Menu.x=200; //l_Menu.y=300; //addChild(l_Menu); //l_News.load(url); } } } package script { // import flash.events.*; import flash.display.*; //import flash.net.URLRequest; public class menucontent extends MovieClip { public function menucontent(){ inNews.contentPath="pages/f_service.swf"; inService.contentPath="pages/f_service.swf"; inContact.contentPath="pages/f_contact.swf"; inGroup.contentPath="pages/f_group.swf"; } } } Но компилятор матюкается : 1120: Access of undefined property MenuItem. Добавлено через 9 минут Но компилятор матюкается : 1120: Access of undefined property MenuItem. Добавлено через 8 часов 20 минут Если закоментить эту строку Потом он начинает ругаться что нельзя задать свойство для неопределенного объекта(( Я конечно могу выкрутиться и задать это свойство следующим образом package script { // import flash.events.*; import flash.display.*; //import flash.net.URLRequest; public class menucontent extends MovieClip { public function menucontent(){ if (parent.getChildByName("inNews")!=null){(parent.getChildByName("inNews") as MovieClip).contentPath="pages/f_news.swf"}; if (parent.getChildByName("inService")!=null){(parent.getChildByName("inService") as MovieClip).contentPath="pages/f_service.swf"}; if (parent.getChildByName("inContact")!=null){(parent.getChildByName("inContact") as MovieClip).contentPath="pages/f_contact.swf"}; if (parent.getChildByName("inGroup")!=null){(parent.getChildByName("inGroup") as MovieClip).contentPath="pages/f_group.swf"}; } } } Добавлено через 20 часов 18 минут ААА, черт , гайкер ты куда пропал??? Люди добрые помогите. Может у кого нибудь есть добросоистный АС3 скрипт с выгрузкой и загрузкой страниц при переходе по кнопкам. Добавлено через 26 часов 10 минут Млин ну все походу дальше этого места не сдвинусь(( Вроде бы столько опытных людей никто подсказать не может((( Добавлено через 26 часов 56 минут Мдя... так как помощи больше не было.. вернулся к прежнему варианту... package script { import flash.events.*; import flash.display.*; import flash.net.URLRequest; public class menu extends MovieClip { private var l_News:Loader; private var l_Service:Loader; private var l_Contact:Loader; private var l_Group:Loader; public function menu(){ stop(); //------- Обработчик событий in_news.addEventListener(MouseEvent.CLICK, news_cListener); in_service.addEventListener(MouseEvent.CLICK, service_cListener); in_contact.addEventListener(MouseEvent.CLICK, contact_cListener); in_group.addEventListener(MouseEvent.CLICK, group_cListener); } private function news_cListener(e:MouseEvent):void{ var url:URLRequest=new URLRequest("pages/f_news.swf"); page_cleaner(); if (l_News==null){ l_News=new Loader(); l_News.x=200; l_News.y=300; addChild(l_News); l_News.load(url); } else {l_News.load(url);} } private function service_cListener(e:MouseEvent):void{ var url:URLRequest=new URLRequest("pages/f_service.swf"); page_cleaner(); if (l_Service==null){ l_Service=new Loader(); l_Service.x=200; l_Service.y=300; addChild(l_Service); l_Service.load(url); }else {l_Service.load(url);} } private function contact_cListener(e:MouseEvent):void{ var url:URLRequest=new URLRequest("pages/f_contact.swf"); page_cleaner(); if (l_Contact==null){ l_Contact=new Loader(); l_Contact.x=200; l_Contact.y=300; addChild(l_Contact); l_Contact.load(url); }else {l_Contact.load(url);} } private function group_cListener(e:MouseEvent):void{ var url:URLRequest=new URLRequest("pages/f_group.swf"); page_cleaner(); if (l_Group==null){ l_Group=new Loader(); l_Group.x=200; l_Group.y=300; addChild(l_Group); l_Group.load(url); }else {l_Group.load(url);} } private function page_cleaner():void{ if ( l_News!=null){ l_News.unload();} if ( l_Service!=null){ l_Service.unload();} if ( l_Contact!=null){ l_Contact.unload();} if ( l_Group!=null){ l_Group.unload();} } } } и мне кажется здесь меньше помогают, а больше скрипты чужие 3.14здят![]() Добавлено через 70 часов 32 минуты АА ну вот все я совсем отчаялся(( Последний раз редактировалось switchfd; 11.02.2009 в 04:29. |
|
|||||
|
Никому твои скрипты не уперлись совершенно никуда, будь уверен.
__________________
Jedem das Seine |
|
|||||
|
Цитата:
А дальше уже - для каждого свой подход. Или если 3 переменных тебе хватило для одного сайта - не факт, что для другого хватит 20.
__________________
Тут мужик танцует и поёт про флэш |
![]() |
![]() |
Часовой пояс GMT +4, время: 16:39. |
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | |
| Опции просмотра | |
|
|