• Страница 1 из 13
  • 1
  • 2
  • 3
  • 12
  • 13
  • »
Модератор форума: JonMagon  
Сообщество uCoz » Вебмастеру » JavaScript, Flash и прочие технологии » uCoz и Flash
uCoz и Flash
MaxL
Сообщений: 862
Репутация: 140

Сообщение # 1 | 19:30:28
Предисловие.



Мы опустим работу над дизайном, а затронем программирования на Action Script. Урок рассчитан на начинающих пользователей, которые знают какой программой создаются Flash ролики, но не знают как связать uCoz с этим языком программирования.



Нужен ли тебе Flash в разработке сайта?



Как и в любом языке программирования Flash решает какие-то задачи лучше, а какие-то хуже. Например плохо использовать его там, где нужна индексация поисковиками, заменять им текст и другую индексируемую информацию, так как поисковые системы очень плохо индексируют Flash ролики. Хорошо использовать его там, где нужна красочная анимация, которая может взаимодействовать с пользователем. Я предпочитаю использовать Flash как элемент сайта. Сайты полностью создание на Flash обычно делаются для презентационных сайтов и сайтов визиток. Главное использовать его с умом.



Чего можно добиться при применении передачи динамических данных uCoz в Flash?



При умелом использовании получаем новый вид модулей, элементов дизайна, функциональности. Можно сделать отличный фотоальбом, или чат.



Способы связать Flash с uCoz.



А теперь подробнее о каждом методе.

Передача переменных в строке.



Это один из самих простых методов передачи данных в среду Flash. При вызове swf файла, вконец адреса приписываем

?vars1=1&vars2=2


В итоге получиться

movie.swf?vars1=1&vars2=2


Что является точной копией GET запроса для сервера, только в этом случае предаем swf файлу. В данном примере мы передаем две пари "переменная = значение". И если в среде создания Flash прописать

trace(vars1); //Вывод в дебагере значения vars1
trace(vars2); //Вывод в дебагере значения vars2


Мы увидим.

1
2


Так можно передавать имя пользователя

movie.swf?USERNAME=$USERNAME$


В среде создания Flash просто обращайтесь к переменной USERNAME и вы получите имя пользователя.

Атрибут FlashVars.



При стандартном добавлении ролика на страницу используются теги OBJECT и EMBED. У них присутствует атрибут FlashVars. Передать данные в систему можно так же, как и в строке — "переменная = значение", но вписывать их нужно так:

< PARAM NAME=FLASHVARS
VALUE="USERNAME=$USERNAME$&MODULE_NAME=$MODULE_NAME$">

< EMBED src="movie.swf"
FLASHVARS="USERNAME=$USERNAME$&MODULE_NAME=$MODULE_NAME$" ...
(другие параметры)>



В данном примере передается имя пользователя, и название модуля. В среде разработки стоит только обратиться к переменной. В данном примере USERNAME или MODULE_NAME.

Текстовый документ.



Этот пример подходит больше для статической информации, но при правильном изменении кода возможно передать и динамическую информацию.
Создаем текстовый документ, и в тело вписываем пари "переменная = значение", например.

&USERNAME=$USERNAME$&MODULE_NAME=$MODULE_NAME$&


Сохраняем в кодировке UTF-8. В среде разработки подгружаем этот файл с мощью LoadVars.



В uCoz нет динамических текстовых документов, но есть одна хитрость. В Action Script нет четкой синтаксической привязки к правильному форматированию переменных, по этому допускается некий отступ от стандартов. Конечно в таком случае нет 100% гарантии в правильном форматировании кода. Как же можно это использовать?
В качестве текстового документа отлично подходит любая генерируемая html страница на uCoz. В тело документа можно вставить пари "переменная = значение" несмотря на лишний код, их можно удаленно загружать как текстовый документ и обрабатывать.
Если хотим использовать страницу по назначению и одновременно передавать данные в Flash, то можно пари "переменная = значение" завернуть в комментарии .
Еще один отличный способ, это использование информеров, как динамический текстовый документ. У каждого информера есть свой адрес вида http://site.ucoz.ru/informer/ID , где ID номер информера.
Создаем нужный информер и в шаблоне все переменные передаем как "переменная = значение".

XML(RSS) файл.



XML - один из самих лучших способов передачи данных в среду Flash. Очень много языков программирования работают с ним.
Основная структура XML файла выглядит так:

 < version="1.0" encoding="UTF-8"? > 
< recipe name="хлеб" preptime="5" cooktime="180">
< title>Простой хлеб>
< ingredient amount="3" unit="стакан">Мука>
< ingredient amount="0.25" unit="грамм">Дрожжи>
< ingredient amount="1.5" unit="стакан">Тёплая вода>
< ingredient amount="1" unit="чайная ложка">Соль>
< instructions>
< step>Смешать все ингредиенты и тщательно замесить.>
< step>Закрыть тканью и оставить на один час в тёплом помещении.>
< step>Замесить ещё раз, положить на противень и поставить в духовку.>


Подробнее о самом языке и его структуре можно прочитать здесь. В среде создания Flash обрабатывать XML можно с помощью класса XMLnode. Прочитать про этот класс можно здесь.



uCoz динамические XML файлы в открытом виде использует при отображении Ajax окон (репутация, опросы и т.д.), а так-же для сортировки информации (сортировка товаров в модуле интернет-магазин). В исходном коде можно увидеть прямую ссылку, и использовать ее для загрузки данных в сам Flash.



Если XML файлов в uCoz не так много, то RSS ленты есть у каждого модуля. Структура RSS файла вполне соответствует стандартам XML, и Flash может обращаться и обрабатывать его так же.

JavaScript + Flash.



Есть несколько способов связать эти два языка программирования:

  • SetVarible.
  • ExternalInterface.


SetVarible.



Используем SetVarible для установки переменной ролику.

getMovie().SetVariable("message","data")


В Flash проверяем получение переменной и используем ее в коде.



ExternalInterface.



В Flash создаем метод, который будет обрабатывать вызовы из javascript.



Формат Action Script:

ExternalInterface.addCallback(функция JS, объект Flash, функция Flash);


Если мы создадим метод

ExternalInterface.addCallback("testJS", null, recievetestJS);


то в JavaScript нужно будет прописать
getMovie().testJS(value);


Как видим, в uCoz нет полной поддержки передачи динамических данных в среду исполнения Flash, и используя приведенные методы мы сможем использовать только минимум тех возможностей, которые можно использовать.


Спасибо в репутацию.
Emilman
Сообщений: 4
Репутация: 0

Сообщение # 2 | 04:08:48
Здравствуйте извините если с дурацким вопросом но не могли ли вы мне помочь

Задача
У меня есть игра на флешь и я хотел бы привязывать рекорды к пользователям по: допустим по имени ведь когда пользователь авторизовался работает скрипт $USERNAME$ или $USER_ID$
Подскажите как сделать запрос на имя пользователя

Если можно код для сайта и флеша (АС3) Один пример Для меня это будет огромный шаг вперед

Заранее спасибо


ARDUUS ANIMO VINCIT ET PRODEST
MaxL
Сообщений: 862
Репутация: 140

Сообщение # 3 | 04:08:58
Вы сами создали эту игру?

Спасибо в репутацию.
Emilman
Сообщений: 4
Репутация: 0

Сообщение # 4 | 04:09:08
Да максим сам, но это ли играет роль ??? Я хоть и программирую под ас3 , но еще пока не встречался с передачей переменных из сайта во флешь
Но полазив на разных форумах понял что надо рыть под FlashVars.
Единственное чего я не понимаю так почему Вы не выкладываете свои исходники и кодинг, кидая сюда лишь готовые файлы. Это не только затрудняет продвижение а даже ставит в тупик.

Очень бы хотелось увидеть тут следующие

Ребята вот этот код вставляем в сайт туда-то...
Вот эти параметры отвечают за то а ти за это ...
Открываем ас3 и пишем то, получаем переменную так-то, запрос делается так...

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

Добавлено (27-Дек-2010, 22:48:39)
---------------------------------------------
А по поводу флешь меню это вы зря, если правильно поиграть на сайте с CSS то можно много добиться, а флешь + XML даст очень гибкое меню которое не будет обременять в постоянной перекомпиляции флешь. Флешь будет играть роль шелла а брать картинки и опции настройки из XML. Разбив большую картинку на много маленьких мы можем добиться очень быстрой загрузки довольно громоздкого меню.
Также для каждый пользователь может сохранять настойки и вернувшийся на сайт или переходя сс страницы на страницу не терять навигацию
Флешь это очень очень гибкая система если правильно ей пользоваться.


ARDUUS ANIMO VINCIT ET PRODEST
MaxL
Сообщений: 862
Репутация: 140

Сообщение # 5 | 04:09:18
Quote (Emilman)
Да максим сам, но это ли играет роль ???

Да, потому-что игру нужно подстраивать под получения данных.
Quote (Emilman)
Да максим сам, но это ли играет роль ??? Я хоть и программирую под ас3 , но еще пока не встречался с передачей переменных из сайта во флешь
Но полазив на разных форумах понял что надо рыть под FlashVars.

Правильно, но есть и еще пару ходов.
Самое простое, прописать все переменные в FlashVars и обращаться к ним из _root. Таким способом очень легко передать имя пользователя и т.д.
Обратно отсылать данные можно POST запросами.
Quote (Emilman)
Единственное чего я не понимаю так почему Вы не выкладываете свои исходники и кодинг, кидая сюда лишь готовые файлы. Это не только затрудняет продвижение а даже ставит в тупик.

Я не использую Adobe Flash, а только SWISHMax4. Файлы данной программы не смогут быть прочитаны и изменены Adobe Flash. Плюс ко всему, пользователей, которые хотят что-то делать на Flash+uCoz очень мало и сделать что-то сложное на uCoz нереально. И сама система в этом направлении пока не очень движется.
Quote (Emilman)
Очень бы хотелось увидеть тут следующие

Ребята вот этот код вставляем в сайт туда-то...
Вот эти параметры отвечают за то а ти за это ...
Открываем ас3 и пишем то, получаем переменную так-то, запрос делается так...

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


Да, я не против помочь, но нужно понять более точную задачу. Что получить и куда передавать.
Например передать $USER_NAME$ в флешку при загрузке.
А на первых страницах я сам еще учился и в лаборатории лежит незаконченная новая запись в этот раздел. Сегодня же займусь этим.
Quote (Emilman)
А по поводу флешь меню это вы зря, если правильно поиграть на сайте с CSS то можно много добиться, а флешь + XML даст очень гибкое меню которое не будет обременять в постоянной перекомпиляции флешь. Флешь будет играть роль шелла а брать картинки и опции настройки из XML. Разбив большую картинку на много маленьких мы можем добиться очень быстрой загрузки довольно громоздкого меню.
Также для каждый пользователь может сохранять настойки и вернувшийся на сайт или переходя сс страницы на страницу не терять навигацию
Флешь это очень очень гибкая система если правильно ей пользоваться.

Да, это все правильно, но в большинстве случаев пользователи хотят то, с чем справляется сам CSS.

Добавлено (28-Дек-2010, 05:17:52)
---------------------------------------------

Quote (Emilman)
У меня есть игра на флешь и я хотел бы привязывать рекорды к пользователям по: допустим по имени ведь когда пользователь авторизовался работает скрипт $USERNAME$ или $USER_ID$

Вот:

Самый простой ход.
Заменить "flash_file.swf", на "flash_file.swf?user_name=$USER_NAME$&user_id=$USER_ID$".
Создаешь динамическое текстовое поле на сцене и выводишь переменную _root.user_name.
Сначала начнем с этого, а потом я покажу другие приемы.


Спасибо в репутацию.
Сообщение отредактировал MaxL - Вторник, 28 Дек 2010, 05:18:24
Emilman
Сообщений: 4
Репутация: 0

Сообщение # 6 | 04:09:28
По поводу "игру нужно подстраивать под получения данных."
Не что подставлять не надо просто игра проверяет наличии 2х переменных
$USER_ID$ - ID пользователя (если гость, то 0) если нет то проверяем дальше
есть в базе такой $USERNAME$ - имя пользователя (login) "да" добавляем к нему новый рекорд, "нет" создаем для него учетку и пишем результат в базу.
Базу держит библиотека xml, вод и все колдовство.

а по поводу кода Вы малость путаете
В ActionScript 2.0 эти переменных можно было найти в корневом клипе документа _root, и обратиться к ним можно было вот так:

_root.["Ваша переменная"]. (как вы описали)

А вот в Action Script 3.0 немного по другому эти переменные остались там же - в корневом классе документа, но в специальном свойстве loaderInfo, класса flash.display.LoaderInfo, который отвечает за информацию загружаемого .swf-файла.

И синтаксис будет выглядеть trace(this.loaderInfo.parameters["Ваша переменная"])

А так все также

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

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

Я скажу так: каждый решает что для него лучше. А раз это раздел "Динамический Flash + uCoz: всё возможно!", то надо решать задачи именно на флешь.

Как правило флешь грузится долго от того что люди не знают ооп программирования и не знают что такое оптимизация ресурсов
Например картинка 1000х300 1,6мб загрузится в разы быстрее если ее разбить на много маленьких частей, а уж собрать их в таблицу это не проблема
Это относится не только ко флешь но и напрямую к uCoz когда попадаешь на сайт а там картинка шапки столько весит аж думаешь что ждёшь 3го предшествия
Про код я вообще молчу используют 10 if и 1 else что напрягает процессор заставляя думать и совершать лишние действия , вместо одного case (хотя по коду видно что кейсом все решить легче) (но это частные случаи спорить не буду)

Не ищите легких решений оптимизируйте код и у вас флешь будет летать.


ARDUUS ANIMO VINCIT ET PRODEST
MaxL
Сообщений: 862
Репутация: 140

Сообщение # 7 | 04:09:38
Quote (Emilman)
а по поводу кода Вы малость путаете
В ActionScript 2.0 эти переменных можно было найти в корневом клипе документа _root, и обратиться к ним можно было вот так:

_root.["Ваша переменная"]. (как вы описали)

А вот в Action Script 3.0 немного по другому эти переменные остались там же - в корневом классе документа, но в специальном свойстве loaderInfo, класса flash.display.LoaderInfo, который отвечает за информацию загружаемого .swf-файла.

И синтаксис будет выглядеть trace(this.loaderInfo.parameters["Ваша переменная"])


Вот и разобрались smile
Quote (Emilman)
Сейчас флешь завел 3д движки которые не требуя высоких ресурсов выдают довольна таки сильные вещи +
Вышло много онлайн игр которые на том же железе обрабатывают 3д шустрее 2Д (которое косят под псевдо 3д) , а мы ведем дискуссии что флешь менюшки это плохо.

Alternativa постарались smile

В данном случае я перехожу на Flex, по этому у меня еще все впереди smile


Спасибо в репутацию.
JEKA11
Сообщений: 7
Репутация: 2

Сообщение # 8 | 04:09:48
У меня есть проблема . Я создаю флєш видео путем вставки в один мувик нескольско роликов. Все ролики я скачал с помощью программы Any DVD Converter Professional c Youtube . После чего в той же прогге я им дал расширение FLV и просто вставил в мувик . Протестил на компе - все работает . Но когда я кинул мувик на ucoz-сайт . Он не проигровался. Даже картинки не появилось . Ничего . Что делать ? Прошу помощи! cry

проблему решил!!!
оказалост нужно было в самом флеш ставить видео не как серверное , а по кадровое )

Сообщение отредактировал JEKA11 - Среда, 29 Дек 2010, 23:11:28
Batman6165
Сообщений: 11
Репутация: 7

Сообщение # 9 | 04:09:58
Здравствуйте можно ли в флеш вставить Ucoz коды и как их вставить???
Я хотел вставить код новости
Как ето все зделать??????
Emilman
Сообщений: 4
Репутация: 0

Сообщение # 10 | 04:10:08
да можно, через переменные + xlm
http://as3coder.blogspot.com/2010/02...script-30.html
Указание FLASHVARS в html-коде, который генерится автоматически:

Code
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<title>Test</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="language" content="en" />
<meta name="description" content="" />
<meta name="keywords" content="" />

<script src="js/swfobject.js" type="text/javascript"></script>
<script type="text/javascript">

// Вот тут указываем FLASHVARS
var flashvars = {
userID:"123456789"
};

var params = {
menu: "false",
scale: "noScale",
allowFullscreen: "true",
allowScriptAccess: "always",
bgcolor: "#FFFFFF"
};
var attributes = {
id:"Test"
};
swfobject.embedSWF("Test.swf", "altContent", "100%", "100%", "10.0.0", "expressInstall.swf", flashvars, params, attributes);
</script>
<style type="text/css">
html, body { height:100%; overflow:hidden; }
body { margin:0; }
</style>
</head>
<body>
<div id="altContent">
<h1>Test</h1>
<p>Alternative content</p>
<p><a href="http://www.adobe.com/go/getflashplayer"><img
src="http://www.adobe.com/images/shared/download_buttons/get_flash_player.gif"
alt="Get Adobe Flash player" /></a></p>
</div>
</body>
</html>

Добавлено (03-Янв-2011, 12:08:24)
---------------------------------------------
Можно и по другому

http://as3coder.blogspot.com/2010/02/flashvars-actionscript-30.html

Пишем на сайте

Code
<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="https://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=8,0,0,0" width="100%" height="100%" align="middle">
<param name="allowScriptAccess" value="sameDomain" />
<param name="movie" value="main.swf" />
<param name="quality" value="high" />
<param name="bgcolor" value="#ffffff" />
<param name="wmode" value="opaque">
<param name="allowFullScreen" value="true" />
<param name="scale" value="noscale" />
<param name="flashvars" value="your_variable_name=your_variable_value"/>
<embed scale="noscale" src="main.swf" flashvars="your_variable_name=your_variable_value" allowFullScreen="true"quality="high" bgcolor="#ffffff" width="100%" height="100%" align="middle" wmode="opaque" allowScriptAccess="sameDomain" type="application/x-shockwave-flash" pluginspage="https://www.macromedia.com/go/getflashplayer" />
</object>

пишем во флешь

package
{
import flash.display.Sprite;
import flash.events.Event;
//
public class Main extends Sprite
{
public function Main():void
{
trace(this.loaderInfo.parameters["your_variable_name"])
}
}
}

где your_variable_name - может быть $UserId$, $USERNAME$- имя пользователя (login)


ARDUUS ANIMO VINCIT ET PRODEST
nightdrednout
Репутация: 273
Уровень замечаний:

Сообщение # 11 | 04:10:18
Emilman, А без невалидного embed обходиться не прбовал?


Only Windows 7. Only Internet Explorer 9. Only Ms SPD, all other error.
Batman6165
Сообщений: 11
Репутация: 7

Сообщение # 12 | 04:10:28
Извените я не понял?????

Добавлено (03-Янв-2011, 21:02:56)
---------------------------------------------
я создал сайт в программе Macromedia Flash 8
Как вставить ucoz код в флеш?????
Пожалуйста помогите!

Ferro7
Сообщений: 285
Репутация: 230

Сообщение # 13 | 04:10:38
Batman6165, элементарно, Watson: вставляем в шаблон главной страницы юкоз-сайта флеш (не забыв сам флеш-файл загрузить на фтп). Дизайн остальных страниц упрощаем так, дабы они легко парсились через экшенскрипт флеша, а события кнопки бы просто загружали во флеш данные этих стираниц. Итого, у нас получиться чудо, которое а)не будет индексироваться, которое б)на все старницы будет иметь и тот же адрес, с)потребует провести три ночи жёсткого секса с экшенскриптом.

Вы полюбили меня. Здесь я. (с)
Webfan
Сообщений: 11
Репутация: 7

Сообщение # 14 | 04:10:48
извените я не понял?
MaxL
Сообщений: 862
Репутация: 140

Сообщение # 15 | 04:10:58
Ferro7, верно! По этому я и говорю «Использовать Flash только там, где он нужен».

Добавлено (04-Янв-2011, 17:29:05)
---------------------------------------------

Quote (Batman6165)
я создал сайт в программе Macromedia Flash 8
Как вставить ucoz код в флеш?????
Пожалуйста помогите!

Загрузи по ftp и рядом с файлом будет коды вставки на сайт флеш ролика.

Спасибо в репутацию.
Сообщество uCoz » Вебмастеру » JavaScript, Flash и прочие технологии » uCoz и Flash
  • Страница 1 из 13
  • 1
  • 2
  • 3
  • 12
  • 13
  • »
Поиск: