![]() |
Методика изготовления сайта. Требуется совет опытных флешеров.
Вот все никак не могу начать правильно делать сайты, все не покидает чувство, что делаю что-то не правильно.
Например, можно ли в методе определять функцию? Код AS3:
Это пример, про замыкания знаю:) Или самый важный вопрос. Например, сайт с несколькими страницами и фото галереей. Делаю так. Класс Main - главная страница, шаблон. На каждую страницу свой класс. Экземпляр страницы помещается сверху с координатами, допустим (50, 150). Т.е. страница имеет эту точку в качестве нулевой. Что же делать, когда надо, допустим, затемнить всю страницу для вывода модального окна? Событие диспатчить на главную, чтобы она все зарывала? Тогда не закроются элементы самой подстраницы. В ином случае возникает проблема с координатами. Или страница галереи. Хочу, чтобы фотки вылетали сверху экрана. Как вычислять координаты? Каждая фотка - экземпляр класса Photo с параметрами уменьшенной картинки, полного изображения, описания и т.д. Как выводить увеличенное изображение с навигацией (предыдущая/следующая)? Это должен делать экземпляр класса Gallery? Или выводить увеличенное изображение экземпляром Photo? Тогда опять проблема с затемнением фона и определением предыдущего/следующего изображения. Я понимаю, что координаты относительно stage можно вычислить (кстати, подскажите как правильнее это сделать заодно :rolleyes:), но может я делаю просто не так как надо и есть более верное и красивое решение? Сайты делаю, неплохо получается, но всегда такое ощущение, что сделал что-то неправильно. Бывалые, подскажите, как правильно это всё делать? |
Цитата:
|
Все зависит от макетов. У вас настолько неконкретный вопрос, что ответ на него даже затрудняюсь дать. Я стараюсь общие элементы сайта, блоки выносить в классы.
Например, Menu, MenuItem, Page, Gallery. В Mайне всем этим управлять. Как-то так. Вообще, хорошо бы всегда смотреть — не всегда оправдано делать сайт на флэше. Из-за двух-трех эффектов не стоит даже браться: вполне подойдет джаваскрипт и хтмл. Флэш-то просто инструмент, задача —*сделать хороший сайт. |
Цитата:
|
слишком много вопросов - начните с чего то конкретного, у меня, допустим есть опыт сайта полностью на flash, делал для себя - т.е. старался гы гы, у самого был подобный вопрос, когда начал делать, но к сожалению, тогда толком тоже не смог никто помочь, потому что я так же спрашивал, как и вы - особо сам не понимая о чем, так что, сейчас, пожалуй, пока воспоминания свежи, возможно и смогу помочь.
Насчет функции в функции или функции в методе - вот мои соображения, после хождения по этим граблям: Так делать можно, но лишь в некоторых случаях, например в том случае, когда требуется сделать небольшую "подфункцию" функции, а не полноценную функцию, из которой или к которой планируется обращаться за пределом той функции, в которой она храниться, поскольку область видимости этой функции очень сильно ограничивается и начинаются траблы, особенно когда мало опыта. Например я использую "подфункцию" в следующем случае - например создаю экземпляр класса загрузчика, который должен в себя загрузить картинку, но мне требуются некоторые действия выполнить именно по окончании загрузки этой картинки или неудаче. Что же делать? Внутри класса загрузчика есть кастомный метод, который начинает передавать "вверх" события, по окончании загрузки, естественно, к экземпляру класса на верху присоеденен слушатель этого события, как только оно происходит - тут то и запускаеся та самая подфункция, которая у меня обычно убивает слушатель, поскольку он больше не нужен, и , например, сдвигает картинку по координатам ...и все - в общем то это все на что годны такие функции в функции, запомните только одну вещь - ваша подфункция живет только в момент работы функции, куда она вложена, вобщем по аналогии с локальной переменной в функции, которая живет только в момент работы функции, и видна и требуется, только для выполнения этой функции. К стати, если кто из более продвинутых кодеров меня поправит, то я только за, потому что написал так, как сам понимаю это. |
Цитата:
|
Цитата:
2. Что будет, если у вас будет 2 или более экземпляров класса с вызванный методом methodName? |
Код AS3:
|
Цитата:
|
Это и имелось ввиду, смотрите мой пример.
|
Про функцию в функции разобрались, при использовании её отписываюсь от события, а переход по ссылке для примера привёл. Так создаю метод и передаю туда кастомизированное событие, если, например, ссылок много.
Что по остальному? Может кто поделится кодом "правильного" простенького сайта? Давайте подискутируем, думаю, многим полезна будет эта тема. Опытные, подскажите пожалуйста, лучше с примерами. А то надоело делать неправильно. |
Цитата:
Если серьёзно, организованный метод Destroy() в базовом классе, наследуемом от Sprite( и другие ) отписывает всех зарегистрированных в нем слушателей( override addEventListener ), удаляет со сцены всех чайлдов и делает их null ( override addChild ). обожаю такие штуки Код AS3:
|
a1. А ты gaia пользовал? очень прикольная штука, предназначена специально для создания сайтов.
|
Цитата:
|
Цитата:
1. Структура страниц и модулей сайта, дизайн 2. Весь ли сайт будет на flash 3. Сколько в сайте графики, анимации или же много текста 4. Как часто будет обновляться сайт 5. Будет ли использоваться swfaddress |
Вообще плохо что адобовцы не сделали метод removeAllListeners нативно.
Делал реализацию эвентов на as2 - там этот метод сразу заложил.. Всего-лишь зануляет массив для листенеров и всё - а вот для создания removeAllListeners в AS3 надо перекрывать addEventListener, создавать список зарегистрированных листенеров, удалять из списка при removeEventListener (опять же переопределять) в общем много лишнего.. что-то вроде: Код AS3:
|
Цитата:
К стати - рекомендую при создании объектов спланировать их создание таким образом, чтобы не было нужды их удалять и создавать снова, а просто хайдить и отхайдивать когда нужно, поскольку, лично я жестоко ип...ся когда пытался сделать создание/удаление объектов как в as2, например при создании flv проигрывателя, мало того что его удаление - это уже проблема сама по себе, дк предствьте сколько нужно предусмотреть его состояний, например при загрузке или буференге видео, чтобы "понятно" объяснить сборщику, что этот объект больше не нужен, и то что он там завис при загрузке видео - это его (flvPlayback) личные проблемы и в любом случае его надо снести, как только этот объект станет адекватным. Поэтому, например при создании сложного объекта, у которого много разных состояний и пр. лабуды, при котором сборщик "считает" что этот объект жизненно необходим вашей програмее, поскольку он лучше знает что для вас нужно на вашем сайте, не смотря на то, что вы уверенно написали - Код AS3:
|
AlexDesinger, вы говорите страшные глупости. Со сброщиком в этом смысле всё в полном порядке.
Цитата:
|
Alex имеет ввиду, что есть на экране одновременно может отображаться 5 картинок, то нет нужды скрывать одну и добавлять одну - можно просто изменить одну.
F1esk, ну в целом можно, только не вижу в этом ничего хорошего. А addChild зачем переписывать? |
Цитата:
Ну вообще сбощик работает хорошо, я не спорю, просто сама идея такого подхода, лично меня абсолютно не устраивает, то ли дело метод removeMovieClip - просто прекрасно был реализован, но эт ладна. Цитата:
|
Цитата:
|
a1., если интересует именно вопрос сайтостроения на флеше, и нет своих наработанных и хорошо отлаженных решений, то советую все же посмотреть в сторону GAIA. Этот фреймворк для сайтов избавит от рутинной и постоянной одинаковой работы при создании каждого сайта, плюс он особо не навязывает работать в той или иной манере, эта штука поможет быстро создать базовый каркас сайта, привязку к SWFAddress, переходы между страницами, остальное уже дело ваше использовать ли встроенные средства по загрузке всякого рода ассетов для страниц сайта (которые тоже не плохо продуманны и достаточно удобны) или пользоваться своими методами.
И как выше было отмечено это не для "домохозяек", вполне себе удобный инструмен вобравший в себя лучшие практики сайтострения на флеше. |
fljot - Обидел меня :) Ну и разработчиков gaia. Люди стараются для нас :)
|
Не для нас стараются, а для домохозяек) А или ты домохозяйка?)
|
Спасиб. Погляжу, что за зверь.
|
Цитата:
a1. Вообще если задумываться над структурой, я для себя придумал такую штуку - если мне нужен сайт где страницы ввиде страниц, похожих на html, а переход по ним выглядет наподобие перехода на другую страницу в браузере, то я создаю MovieClip - контейнер, в который загружается внешний *.swf имитирующий именно страницу, которая выгружается, когда в тот же контейнер загружается другая страница со всем своим содержимым... - если мне нужен сайт где страницы в виде какого-нибудь красивого эффекта или необычного вида с анимационными переходами, то я предпочитаю делать страницу ввиде отдельного класса, экземпляр, которого создается когда нужно (в случае применения swfaddress сразу все модули и важные данные, поскольку точка входа на сайт может быть разной) т.е. это получается уже и не страница, а по большому счету определенный модуль, который активируется(отхайдивается) в нужный момент и начинает работать. Но возможно вы выработаете в процессе какой -нибудь свой подход. Вообще, честно говоря, создавать сайт полностью на flash без отдельных html страниц не имеет большого смысла, поскольку глвной вашей головной болью станет раскрутка такого сайта. Лично я создаю сайты полностью на flash только в трех случаях - полных хомяк, когда автора не запаривает рассылать вручную ссылки на свой сайт, поскольку он хочет полный эксклюзив, сайт-портфолио, с сылками тоже-самое, только работодателям, либо сайт-презентация, где опять же требуется в основном красота, нежели тектовая информация, во всех остальных случаях лучше прибегнуть к стандартному способу гипертекстовой разметки с тем или иным количеством flash на странице. |
на самом деле, мне кажется, тут обсуждается изобретение Нового Велосипеда.
Каждый раздел сайта описывается xml-файлом, который формируется динамически каким-либо движком, например, на php. Флеш-загрузчик сайта хранит в себе текущий контейнер с контентом. При выборе нового раздела открывается его xml-описание, на основании которого в специально созданный пустой контейнер подкачивается весь контент. Как только подкачка закончилась, это контейнер показывается и становится текущим, а "предыдущий текущий" удаляется. Причем, эта модель может использоваться даже для раскручиваемых сайтов. В этом случае логика такая: - движок при запросе выдает html-страницу, которая содержит код для вызова флеш-загрузчика и одновременно текстовый контент, который показывается в том случае, если у пользователя не установлен флеш, т.е., практически никогда. - флеш-загрузчик открывает xml-описание раздела и подкачивает контент, как и было описано выше. Разница межу вариантами в том, что в первом варианте открытие разделов происходит внутри однажды загруженного флеш-загрузчика, а во втором случае загрузчик каждый раз запускается заново. Но поскольку сам он весит копейки, это незаметно. |
Цитата:
Цитата:
|
Цитата:
и только в том случае, когда сайт пойдет в продвижение иначе Вы не скормите контент поисковикам если продвижения нет, то и перезагружать не нужно. а велосипед был в другом. не надо каждый раз с нуля программировать флэш-сайт нужно один раз сделать загрузчик, а потом просто скармливать ему контент |
Rzer - я не домохозяйка, но занимаюсь как раз в основном сайтами. А сайты часто шаблонные. иногда gaia очень даж годится. :)
|
mikhailk
Вообще интересный вариант с динамической html страницой, на которой как я понял генерируется текст, который виден только поисковикам, скажите, а есть где-нть почитать поподробнее про такую реализацию, или может дадите мини-мастер класс, хотябы в теории, по-моему, это как раз по теме будет =) |
Если я правильно понял mikhailk, то он имел ввиду такой варинат, как сейчас сделан http://thefwa.com
|
да, примерно об этом я и говорил.
Плюс создаем отдельный div, в который кладем столько текстового контента, сколько хотим (по теме, естественно). При загрузке страницы проверяем, установлен ли флэш-плеер и, если установлен, то скрываем этот div средствами js или просто выводим в него флэш. AlexDesinger, ставить текст, который виден ТОЛЬКО поисковикам - это не всем поисковикам может понравиться. )) Я говорю о тексте (оформленном разметкой, стилями, при необходимости картинками и т.д.), который показывается вместо флэша, если флэш-плеер не установлен. Т.е., по сути мы выдаем одновременно флэшевую и html-ную версии сайта, а пользователь видит ту, которую может. |
mikhailk
ааа, теперь, понятно, это называется альтернативный контент, ну это итак все используют, это и у меня есть, правда в нем кроме ссылки на flash плеер я не стал ничего писать. У меня то был в другом вопрос - вот пользователь зашел на сайт, увидел флэш, поисковик альтернативный контент и все обрадовались, но вот пользователь щелкнул на сслыку, swfaddres подгрузил или изменил отображаемый кнтент во flash, как это сделать для поисковика, ну или, соответственно для тех, кому его религиозные представления не позволяют просматривать flash контент? |
Должна быть страница с html-контентом, соответствующему контенту во флеше, по адресу, соответствующему swfaddress'овскому диплинку. Например, .com/gallery/ <->.com/#/gallery/ Причем на главной странице в альт. контенте должна быть ссылка на .com/gallery/. При заходе на .com/gallery/ (скажем, с гугла) возможна автоматическая переадресация (JS) на .com/#/gallery/, НО по сути это клоакинг => можно быть забаненым поисковиком.. так что или на свой страх и риск, или придумывать workaround'ы...
Но это топик скатывается в вопросы seo. |
Цитата:
Берем любую cms, которая может отдавать страницу в виде html (со всеми обвесами/темплейтами) и ЕЕ ЖЕ в xml (только непосредственно контент). При запросе адреса URL cms-ка формирует html-страницу и выплевывает ее в браузер пользователя. В этой странице сидит флэш-загрузчик и javaScript, который определяет наличие флэш-плеера. Если флеш-плеера нет, то пользователь видит то, что уже пришло. Т.е., HTML. Это же увидит и поисковик. Если плеер есть, то HTML-контент не показывается, а javaScript'ом запускается флеш-загрузчик, в который передаются параметры текущей страницы. Он повторно запрашивает у cms эту страницу, но уже в xml. После получения xml загрузчик догружает недостающее и показывает флэш-версию страницы. Выглядит подозрительно с точки зрения повышенного трафика (каждая страница запрашивается вроде как два раза), но по факту гоняется только текст, а графика все равно качается в один проход, а потом кэшируется. Ну и те изображения/мувики, которые есть только во флэш-варианте. Сам по себе загрузчик весит вообще копейки. Несколько килобайт. С точки зрения СЕО тут все в порядке. |
А не судьба если есть флеш плеер поставить редирект с индекса на флеш версию, а если нету - на хтмл версию?
|
Цитата:
|
Psycho Tiger, а в чем выигрыш-то?
Тащить два сайта вместо одного? :) |
Дело не в сео. Некоторым клиентам это не нужно.
Вот, например, я сайт с полгода назад делал: http://www.projectinteriors.net/, как бы вы его реализовали, особенно интересуют странички с галереями? Просто на пальцах: тут див скрываем, тут добавляем-удаляем. |
| Часовой пояс GMT +4, время: 21:20. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.