Опубликован: 07.11.2006 | Доступ: свободный | Студентов: 3398 / 338 | Оценка: 3.94 / 3.71 | Длительность: 37:11:00
Лекция 19:

Flash, ColdFusion и Remoting

< Лекция 18 || Лекция 19: 1234567

Сообщение дня, реализованное с помощью ColdFusion

Мы еще раз вкратце рассмотрим упражнение "Message of the Day", проделанное в "Динамический Flash: PHP" , однако на этот раз оно будет преобразовано в формат ColdFusion. Большинство аспектов Flash останутся теми же, за исключением того, что ссылка на update.php сменится на update.cfm. Из этого следует, что метод onRelease для кнопки сохранения будет выглядеть следующим образом.

save_btn.onRelease = function() {
  dataLoader.message = _root.message_txt.text;
  dataLoader.photofile = _root.image_txt.text;
  dataLoader.onLoad = checkSuccess;
  dataLoader.sendAndLoad("update.cfm", dataLoader, "POST");
};

Фильм Flash будет функционировать так же, и пользователь не заметит изменений. Логика серверной части - та часть, которая изменится когда мы будем передавать переменные в CF, в нашем случае, update.cfm. Рассмотрим необходимый код CF, который будет принимать переданные от Flash переменные формы и сохранять их в текстовом файле на сервере.

<cfsetting enablecfoutputonly="yes">

Тег <cfsetting> используется для указания CF того, что на страницу не следует выводить никакие данные, за исключением находящегося между тегами <cfoutput>. Это предотвратит появление любых лишних пробелов и строк. Flash довольно требователен к пробелам, поэтому советуем удалить их.

<cfset path="c:\inetpub\wwwroot\">
<cfset datafile="message2a.txt">

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

<cfparam name="form.message" default="">
<cfparam name="form.photofile" default="">

<cfset data = "&message=" & urlencodedformat(form.message)>
<cfset data = data & "&photofile=" &
urlencodedformat(form.photofile)>

Теперь установим несколько значений по умолчанию для полей формы на случай, если они не будут переданы на страницу. Это не критично для работы приложения, однако это помогает предотвратить любые ошибки, возникающие при доступе к странице напрямую из веб-браузера. Переменная data используется для хранения переменных из Flash, которые кодируются с помощью функции urlencodedformat. Полезно иметь в виду, что разработчику доступно много функций CF. Эти функции можно найти в документации CF во время установки, в случае инсталляции по умолчанию.

<cffile action="write" file="#path#message2a.txt" output="#data#">

Создав переменную данных из информации, переданной от Flash, можно создать файл на сервере и сохранить в нем эту информацию. <cffile> является очень мощным тегом CF, позволяющим разработчикам читать, создавать, обновлять и удалять файлы в процессе работы. Файл сохраняется в директории, указанной ранее и имеющей имя message2a.txt. Переменная data используется для сохранения информации из Flash в текстовом файле.

<cfoutput>&result=Okay&</cfoutput>

Наконец, выводим результат на страницу, которая затем загружается во Flash. Затем появляется сообщение о состоянии, сообщающее пользователю, что файл был успешно сохранен. Сразу после сохранения файла пользователь может нажимать кнопку "load" и загружать информацию из message2a.txt.

< Лекция 18 || Лекция 19: 1234567
Игорь Хан
Игорь Хан

у меня аналогичная ситуация. Однако, если взять пример из приложения (ball_motion_04_click for trial.fla) то след остается. при этом заметил, что в моем проекте в поле "One item in library" виден кружок, в то время как в приложенном примере такого кружка нет.

Вопрос знатокам, что не так?

Александр Коргапольцев
Александр Коргапольцев

объект созданый мной упорно не желает оставлять след(единственное что добился, так это то что шарик резво гоняется за курсором) функция duplicateMovieClip остаётся не активной, т.е. следа от объекта не остаётся, но если я тоже самый код вбиваю в учебный файл всё работает, не могу понять где я ошибаюсь и почему в документе созданном заново, не работает код начиная от функции duplicateMovieClip?