Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Поиск рулит! Сообщения за день Все разделы прочитаны
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 09.02.2009, 00:55
switchfd вне форума Посмотреть профиль Отправить личное сообщение для switchfd Найти все сообщения от switchfd
  № 1  
Ответить с цитированием
switchfd

Регистрация: Feb 2009
Сообщений: 23
По умолчанию Создание сайта с использованием ас3, разбор полетов.

Я конечно дико извиняюсь, что решил поднять такую детскую тему и понимаю что ей здесь не место .Если вы ни принимаете мои извинения тогда можете её удалить.
Ну а если принимаете тогда поехали:

Как известно любой простецкий сайт во флеше да и в большинстве случаев любой флешовский сайт это флеш ролик с навигацией из кнопок при нажатии на которые в него подгружаются друие ролики.
(мде загнул) И так на основной сцене главного мувика. Моожно все "разукрасить" напихать кнопки с навигацией. Создать подгружаемые мувики. Вот все это я сделал а дальше идет вопрос.

Тут в скрипте я начал эксперементировать сподружаемыми мувиками (т.е. страницы : новости, о компании, контакты и т.д.). Так вот меня интересует нужно ли для каждого подгружаемого мувика объявлять переменную? И для оптимизации сайта как лучше сделеать при переходе с странички на страничку лучше делать уже загруженные странички невидимыми, чтобы потом их не пршлось загружать или их отгружать а потом при переходе (нажатии на кнопку) опять загружать?
Если в первом случае есть какие-то мысли ..как написать условия для видимости. Или если ыторой способ лучше то чем. Будут ли загруженные ролики храниться в темпрари.
В общем если вам не понятен мой безумный ббред и вся лирика то скажите как бы сделали вы и если есть исходный код в ас3 поделитесь кому не жалко) А если там будет прелоадер то вообще замечательно)
Когда протрезвею))) объясню все по полочкам)


Код AS3:
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();}
 
 
	*/
 
 
     } 
}
Добавлено через 3 часа 0 минут
Вот переработанный код...
Код AS3:
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 часа 4 минуты
Выглядит очень некрасиво. При том при нажатии на кнопки страница подгружается повторно(. И вообще интересно что лучше помещать в ад чайлд переменную или её контент...Черт выглядит как-то топорно.((

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

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

Добавлено через 3 часа 11 минут
Теперь надо сделать так чтобы проверялось условие: если страница уже загружена при переходе на другую страницу она становилась невидимой.

Старый 10.02.2009, 03:08
Gaen вне форума Посмотреть профиль Отправить личное сообщение для Gaen Найти все сообщения от Gaen
  № 2  
Ответить с цитированием
Gaen
strange mood
 
Аватар для Gaen

модератор форума
Регистрация: Jul 2004
Адрес: Питер
Сообщений: 1,653
Записей в блоге: 1
Отправить сообщение для Gaen с помощью ICQ Отправить сообщение для Gaen с помощью Skype™
Модули лучше выгружать, тк они занимают память и могут грузить порц "забытыми" listener'ами. В любом случае после первой загрузки они останутся в кэше браузера, и после этого не будут скачиваться повторно.

Если же очень хочется держать модули в памяти, то просто делаем ссылки на них и флаги загрузки, а в обработчике проверяем, загружен ли модуль, и если загружен, то берём его по соответствующей ссылке, иначе грузим, запоминаем ссылку и выставляем флаг что модуль загружен.
__________________
тонкий тролль, осеянный благодатью

Старый 10.02.2009, 16:18
switchfd вне форума Посмотреть профиль Отправить личное сообщение для switchfd Найти все сообщения от switchfd
  № 3  
Ответить с цитированием
switchfd

Регистрация: Feb 2009
Сообщений: 23
О спс гайкер очень толково объяснил. Но я не совсем понял что значит "забытые" лисенеры? Хотелось бы знать интересно все ли браузеры нормально работают с флешем и кешируют его. Если так то работа упрощается. (Тогда интересует вопрос можно ли как-нибудь ухещириться и написать одну функцию обработки нажатия, а не для каждой кнопки в отдельности?)

Я вот уже начал пробовать делать второй вариант(там будет при переходе на другую страницу, ранее загруженные страницы будет становиться невидимыми. Когда код допишу выложу.

Вообще просто хочу в этом посте более и менее разобраться как грамотно делаются сайты на флеше при этом используя АС3, тем более нигде описания толкового не нашел, а нормальных темплейтов с АС3 днем с огнем не сыщешь.

Старый 10.02.2009, 16:55
snipe вне форума Посмотреть профиль Отправить личное сообщение для snipe Найти все сообщения от snipe
  № 4  
Ответить с цитированием
snipe

Регистрация: Mar 2007
Сообщений: 5
Цитата:
Сообщение от switchfd Посмотреть сообщение
О спс гайкер очень толково объяснил. Но я не совсем понял что значит "забытые" лисенеры? Хотелось бы знать интересно все ли браузеры нормально работают с флешем и кешируют его. Если так то работа упрощается. (Тогда интересует вопрос можно ли как-нибудь ухещириться и написать одну функцию обработки нажатия, а не для каждой кнопки в отдельности?)

Я вот уже начал пробовать делать второй вариант(там будет при переходе на другую страницу, ранее загруженные страницы будет становиться невидимыми. Когда код допишу выложу.

Вообще просто хочу в этом посте более и менее разобраться как грамотно делаются сайты на флеше при этом используя АС3, тем более нигде описания толкового не нашел, а нормальных темплейтов с АС3 днем с огнем не сыщешь.
Все браузеры работают одинаково с флешем (за исключением очень редких случаев), т.к. обработка SWF происходит в плеере, а не в браузере. Кеширование устанавливает пользователь, может конечно и запретить, но это ОЧЕНЬ редко, поэтому им можно пользоваться свободно. Невидимыми "страницы" лучше не делать, т.к. они продолжают функционировать и грузить проц. Лучше всё-таки выгружать и на это место ставить новый модуль. Так проще работать и более унифицировано. Функцию для обработки нажатия пункта меню можно сделать одну, просто каждая кнопка будет передавать имя, от которого и будет происходить дальнейшие действия.
В общем, под каждую конкретную задачу находится своё решение и описанный выше вариант может не подойти для конкретного проекта.

Старый 10.02.2009, 18:07
Gaen вне форума Посмотреть профиль Отправить личное сообщение для Gaen Найти все сообщения от Gaen
  № 5  
Ответить с цитированием
Gaen
strange mood
 
Аватар для Gaen

модератор форума
Регистрация: Jul 2004
Адрес: Питер
Сообщений: 1,653
Записей в блоге: 1
Отправить сообщение для Gaen с помощью ICQ Отправить сообщение для Gaen с помощью Skype™
По поводу единой функции обработки. Суть в том, чтобы засунуть все кнопки в один мувик и подписаться один раз на его MouseEvent.CLICK вместо того, чтобы подписываться на каждую кнопку. Это удобно, тк при дальнейшем добавлении новой кнопки событие от неё сразу будет долетать до обработчика, и нужно будет только прописать для неё действие.

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

Код AS3:
var url:URLRequest=new URLRequest((e.target as MenuItem).contentPath);
__________________
тонкий тролль, осеянный благодатью

Старый 10.02.2009, 20:07
switchfd вне форума Посмотреть профиль Отправить личное сообщение для switchfd Найти все сообщения от switchfd
  № 6  
Ответить с цитированием
switchfd

Регистрация: Feb 2009
Сообщений: 23
Если я правильно понял всю логику то MenuItem это название мувика куда запихнуты кнопки и для этого же мувика создаем класс тогда у меня получается:
Код AS3:
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);
 
		 }
 
 
 
     } 
}
и дополнительный класс
Код AS3:
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";
	 }
 
 
 
 
     } 
}
Добавлено через 2 минуты
Но компилятор матюкается : 1120: Access of undefined property MenuItem.

Добавлено через 9 минут
Но компилятор матюкается : 1120: Access of undefined property MenuItem.

Добавлено через 8 часов 20 минут
Если закоментить эту строку
Код AS3:
var url:URLRequest=new URLRequest((e.target as MenuItem).contentPath);
Потом он начинает ругаться что нельзя задать свойство для неопределенного объекта((
Я конечно могу выкрутиться и задать это свойство следующим образом
Код AS3:
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"};
 
 
 
	 }
 
 
 
 
     } 
}
Но это какая-то порнуха получается)))0

Добавлено через 20 часов 18 минут
ААА, черт , гайкер ты куда пропал??? Люди добрые помогите. Может у кого нибудь есть добросоистный АС3 скрипт с выгрузкой и загрузкой страниц при переходе по кнопкам.

Добавлено через 26 часов 10 минут
Млин ну все походу дальше этого места не сдвинусь(( Вроде бы столько опытных людей никто подсказать не может(((

Добавлено через 26 часов 56 минут
Мдя... так как помощи больше не было.. вернулся к прежнему варианту...
Код AS3:
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.
Старый 14.02.2009, 15:08
Fergus вне форума Посмотреть профиль Отправить личное сообщение для Fergus Найти все сообщения от Fergus
  № 7  
Ответить с цитированием
Fergus

Регистрация: Oct 2008
Адрес: Moscow
Сообщений: 130
Отправить сообщение для Fergus с помощью ICQ
Никому твои скрипты не уперлись совершенно никуда, будь уверен.
__________________
Jedem das Seine

Старый 14.02.2009, 16:23
Psycho Tiger вне форума Посмотреть профиль Отправить личное сообщение для Psycho Tiger Найти все сообщения от Psycho Tiger
  № 8  
Ответить с цитированием
Psycho Tiger
 
Аватар для Psycho Tiger

блогер
Регистрация: Jun 2005
Адрес: Toronto
Сообщений: 6,600
Записей в блоге: 17
Цитата:
Сообщение от switchfd
у кого нибудь есть добросоистный АС3 скрипт с выгрузкой и загрузкой страниц при переходе по кнопкам.
Для каждого подхода свой скрипт. Чтобы очистить дисплей лист:

Код AS3:
while (numChildren) removeChildAt(0);
А дальше уже - для каждого свой подход. Или если 3 переменных тебе хватило для одного сайта - не факт, что для другого хватит 20.

Старый 14.02.2009, 22:18
Gaen вне форума Посмотреть профиль Отправить личное сообщение для Gaen Найти все сообщения от Gaen
  № 9  
Ответить с цитированием
Gaen
strange mood
 
Аватар для Gaen

модератор форума
Регистрация: Jul 2004
Адрес: Питер
Сообщений: 1,653
Записей в блоге: 1
Отправить сообщение для Gaen с помощью ICQ Отправить сообщение для Gaen с помощью Skype™
switchfd стучи сем шесть ноль три пять восем сем
__________________
тонкий тролль, осеянный благодатью

Создать новую тему Ответ Часовой пояс GMT +4, время: 16:39.
Быстрый переход
  « Предыдущая тема | Следующая тема »  
Опции темы
Опции просмотра
Комбинированный вид Комбинированный вид

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


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


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