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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 11.03.2010, 17:52
a1. вне форума Посмотреть профиль Отправить личное сообщение для a1. Посетить домашнюю страницу a1. Найти все сообщения от a1.
  № 1  
Ответить с цитированием
a1.

Регистрация: Sep 2004
Сообщений: 42
Отправить сообщение для a1. с помощью ICQ
По умолчанию Методика изготовления сайта. Требуется совет опытных флешеров.

Вот все никак не могу начать правильно делать сайты, все не покидает чувство, что делаю что-то не правильно.
Например, можно ли в методе определять функцию?
Код AS3:
public function methodName()
{
	btn.addEventListener(MouseEvent.CLICK, goToGoogle);
	function goToGoogle(e:MouseEvent)
	{
		navigateToURL(new URLRequest('http://www.google.com'), '_blank');
	}
}
Можно ли так делать? Точнее, правильно ли?
Это пример, про замыкания знаю

Или самый важный вопрос.
Например, сайт с несколькими страницами и фото галереей.
Делаю так.
Класс Main - главная страница, шаблон.
На каждую страницу свой класс. Экземпляр страницы помещается сверху с координатами, допустим (50, 150). Т.е. страница имеет эту точку в качестве нулевой. Что же делать, когда надо, допустим, затемнить всю страницу для вывода модального окна? Событие диспатчить на главную, чтобы она все зарывала? Тогда не закроются элементы самой подстраницы. В ином случае возникает проблема с координатами.

Или страница галереи. Хочу, чтобы фотки вылетали сверху экрана. Как вычислять координаты? Каждая фотка - экземпляр класса Photo с параметрами уменьшенной картинки, полного изображения, описания и т.д. Как выводить увеличенное изображение с навигацией (предыдущая/следующая)? Это должен делать экземпляр класса Gallery? Или выводить увеличенное изображение экземпляром Photo? Тогда опять проблема с затемнением фона и определением предыдущего/следующего изображения.

Я понимаю, что координаты относительно stage можно вычислить (кстати, подскажите как правильнее это сделать заодно ), но может я делаю просто не так как надо и есть более верное и красивое решение?

Сайты делаю, неплохо получается, но всегда такое ощущение, что сделал что-то неправильно.
Бывалые, подскажите, как правильно это всё делать?

Старый 11.03.2010, 18:34
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 2  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,787
Цитата:
Сообщение от a1. Посмотреть сообщение
Можно ли так делать? Точнее, правильно ли?
Делать можно, но неправильно. Объявляйте методы-обработчики.

Старый 11.03.2010, 19:11
oleg_tomenko вне форума Посмотреть профиль Отправить личное сообщение для oleg_tomenko Найти все сообщения от oleg_tomenko
  № 3  
Ответить с цитированием
oleg_tomenko

Регистрация: Feb 2010
Адрес: Донецк
Сообщений: 34
Все зависит от макетов. У вас настолько неконкретный вопрос, что ответ на него даже затрудняюсь дать. Я стараюсь общие элементы сайта, блоки выносить в классы.
Например, Menu, MenuItem, Page, Gallery. В Mайне всем этим управлять. Как-то так.

Вообще, хорошо бы всегда смотреть — не всегда оправдано делать сайт на флэше. Из-за двух-трех эффектов не стоит даже браться: вполне подойдет джаваскрипт и хтмл. Флэш-то просто инструмент, задача —*сделать хороший сайт.

Старый 11.03.2010, 20:54
TERRORist вне форума Посмотреть профиль Отправить личное сообщение для TERRORist Найти все сообщения от TERRORist
  № 4  
Ответить с цитированием
TERRORist
 
Аватар для TERRORist

блогер
Регистрация: Jun 2005
Адрес: RU
Сообщений: 1,540
Записей в блоге: 12
Цитата:
Сообщение от a1. Посмотреть сообщение
Вот все никак не могу начать правильно делать сайты, все не покидает чувство, что делаю что-то не правильно.
Например, можно ли в методе определять функцию?
Код AS3:
public function methodName()
{
	btn.addEventListener(MouseEvent.CLICK, goToGoogle);
	function goToGoogle(e:MouseEvent)
	{
		navigateToURL(new URLRequest('http://www.google.com'), '_blank');
	}
}
А как потом отписаться от такого листенера? если понадобится

Старый 11.03.2010, 21:04
AlexDesinger вне форума Посмотреть профиль Отправить личное сообщение для AlexDesinger Посетить домашнюю страницу AlexDesinger Найти все сообщения от AlexDesinger
  № 5  
Ответить с цитированием
AlexDesinger

Регистрация: Feb 2007
Сообщений: 563
слишком много вопросов - начните с чего то конкретного, у меня, допустим есть опыт сайта полностью на flash, делал для себя - т.е. старался гы гы, у самого был подобный вопрос, когда начал делать, но к сожалению, тогда толком тоже не смог никто помочь, потому что я так же спрашивал, как и вы - особо сам не понимая о чем, так что, сейчас, пожалуй, пока воспоминания свежи, возможно и смогу помочь.

Насчет функции в функции или функции в методе - вот мои соображения, после хождения по этим граблям:
Так делать можно, но лишь в некоторых случаях, например в том случае, когда требуется сделать небольшую "подфункцию" функции, а не полноценную функцию, из которой или к которой планируется обращаться за пределом той функции, в которой она храниться, поскольку область видимости этой функции очень сильно ограничивается и начинаются траблы, особенно когда мало опыта.

Например я использую "подфункцию" в следующем случае -
например создаю экземпляр класса загрузчика, который должен в себя загрузить картинку, но мне требуются некоторые действия выполнить именно по окончании загрузки этой картинки или неудаче.
Что же делать? Внутри класса загрузчика есть кастомный метод, который начинает передавать "вверх" события, по окончании загрузки, естественно, к экземпляру класса на верху присоеденен слушатель этого события, как только оно происходит - тут то и запускаеся та самая подфункция, которая у меня обычно убивает слушатель, поскольку он больше не нужен, и , например, сдвигает картинку по координатам ...и все - в общем то это все на что годны такие функции в функции, запомните только одну вещь - ваша подфункция живет только в момент работы функции, куда она вложена, вобщем по аналогии с локальной переменной в функции, которая живет только в момент работы функции, и видна и требуется, только для выполнения этой функции.

К стати, если кто из более продвинутых кодеров меня поправит, то я только за, потому что написал так, как сам понимаю это.

Старый 11.03.2010, 21:33
Art_133 вне форума Посмотреть профиль Отправить личное сообщение для Art_133 Посетить домашнюю страницу Art_133 Найти все сообщения от Art_133
  № 6  
Ответить с цитированием
Art_133
 
Аватар для Art_133

блогер
Регистрация: Feb 2007
Адрес: Москва
Сообщений: 538
Записей в блоге: 2
Отправить сообщение для Art_133 с помощью Skype™
Цитата:
Сообщение от etc Посмотреть сообщение
Делать можно, но неправильно. Объявляйте методы-обработчики.
скажите почему так делать не правильно? Вы считаете что такие простые функции как переход по ссылке стоит выносить в отдельную функцию? Если можно накидайте простой пример как нужно делать в данном случае. Просто я часто так делаю и не вижу никаких сложностей с эти методом...

Старый 11.03.2010, 21:40
iNils вне форума Посмотреть профиль Отправить личное сообщение для iNils Посетить домашнюю страницу iNils Найти все сообщения от iNils
  № 7  
Ответить с цитированием
iNils
Негуру
 
Аватар для iNils

администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,884
Записей в блоге: 7
Цитата:
Вы считаете что такие простые функции как переход по ссылке стоит выносить в отдельную функцию?
1. Что будет, если вы дважды вызовите methodName?
2. Что будет, если у вас будет 2 или более экземпляров класса с вызванный методом methodName?
__________________
(и)Нильс.ru | Плагины для FlashDevelop

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

блогер
Регистрация: Jun 2005
Адрес: Toronto
Сообщений: 6,601
Записей в блоге: 17
Код AS3:
public function methodName()
{
	btn.addEventListener(MouseEvent.CLICK, goToGoogle);
}
private function goToGoogle(e:MouseEvent)
{
	navigateToURL(new URLRequest('http://www.google.com'), '_blank');
}
Создавая такую анонимную функцию как в вашем случае вы никогда от неё не отпишитесь и она навсегда останется в памяти.

Старый 11.03.2010, 22:49
Art_133 вне форума Посмотреть профиль Отправить личное сообщение для Art_133 Посетить домашнюю страницу Art_133 Найти все сообщения от Art_133
  № 9  
Ответить с цитированием
Art_133
 
Аватар для Art_133

блогер
Регистрация: Feb 2007
Адрес: Москва
Сообщений: 538
Записей в блоге: 2
Отправить сообщение для Art_133 с помощью Skype™
Цитата:
Сообщение от iNils Посмотреть сообщение
1. Что будет, если вы дважды вызовите methodName?
2. Что будет, если у вас будет 2 или более экземпляров класса с вызванный методом methodName?
Пардон. По всей видимости я не правильно понял. Я думал что имелось ввиду метод navigateToUrl правильне было бы вынести в о дельную функцию и уже в обработчике события вписывать ее вместо navigateToURL.

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

блогер
Регистрация: Jun 2005
Адрес: Toronto
Сообщений: 6,601
Записей в блоге: 17
Это и имелось ввиду, смотрите мой пример.

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

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

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


 


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


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