Уильям Брэдберри
Сегодня
я поделюсь со всеми весьма полезной и очень нужной одной сетевой
приблудой, а именно - своей машинкой, для подсчета остановок.
И так,
знакомтесь - флэшевый КАУНТЕР.
Каунтер - это такая штука, которая
присвоит Вам порядковый номер, в тот момент, когда Вы поимеете
неосторожность заглянуть, вдруг, на мою страничку, заблудившись в ВВВ,
бескрайних просторах инета. Тут-то я и не упущу момент ехидно потирая ручонки
записать : - АГА! Попался, будешь 13 номер... ;)=
А попросту -
СЧЕТЧИК. Ведь каждый согласится, что счетчик жизненно необходимая вещь для
использования в корыстных целях...
Почему именно флэшевый? А
почему бы и нет?
Флэш точно такой же инструмент, как и остальные, но по
моему мнению (а не по мнению какого-то там продажного Нильсена, ну и рожа на
фотке, явно булки жрет, буржуй) флэш и предоставляет именно те широкие
горизонты и ВОЗМОЖНОСТИ для полета творческой мысли, какие не предоставляет
никакая другая программа на сей день.
Но какая же свобода без
энергетической подпитки? Поэтому себя всячески нужно поощрять и хвалить,
например: - О, на моем хомяке сегодня уже восьмой посетитель за этот год,
УРА! Вперед! Не стой на месте, твори сам.
//. . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . 1. ЭКИПИРОВКА
Для
нашего полета нам потребуются крылья следующих моделей: 1 Графический
редактор ФЛЭШ версии 5, или 6 (МХ) 2 Текстовый редактор (любой
подходящий, например БЛОКНОТ, я же юзаю УЛЬТРАЕДИТ
http://www.ultraedit.com) 3 И, разумеется, сервер (подойдет даже локальный) с
ФТП-доступом к нашему аккаунту и поддержкой PHP.
PHP это П-Х-П (php), а
не какое-то там русское нациАнальное Ед... тьфу, меньшинство - да, это
именно тот плазменный мотор, который и будет сжигать наш керосин во время
продвижения по службе...
Если Вы все это удачно раздобыли и считаете себя
готовым, то ГО-0-ГО-0-ГО-0!
- Налево, командаааа... - в RUSH на базу
"А", две гренки в проход, добиваем оставшихся СТ из 1-3, раунд
наш! - Stick together, team!
Инструктор предполагает, также, что Вы
уже прошли КМБ (курс малолетнего бойскаута) И знакомы со всеми морскими и
фэлшевыми узлами, как то:
- А как мэне изменить размер рабочего по-о-оля,
учитэл? - СлушАй, Гиви, дастал, берешь саперку и мэняешь, от меня до
следующего танка...
- Харашо, учител, а кнопка-то гиде рисовается? -
Гиви, в П... всо, малчу, малчу, дарагой, утри соплю...
... а также, что
знакомы с тем, как пишутся скрипты внутри флэш-редактора.
//. . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2. ИНСТРУМЕНТЫ
НОВОГО ПОКОЛЕНИЯ
Откроем редактор ФЛЭШ 5, или МХ Сохраним наш файл в
какую-нибудь дирректорию, с именем "counter.fla"
Необходимые в
работе элементы: Мувиклип - 1 штука. (рисуем черный прямоугольник,
выделяем, жмем Ф-8, выбираем МУВИКЛИП, ЕНТЕР, цель уничтожена)

Текстовое поле - 1 штука, например внутри этого
мувиклипа. Заходим в режим редактирования оного по даблклику и поверх
черного квадрата рисуем текстовое поле в свойствах поля (правый клик на поле
> properties) выставляем напротив надписи
VAR: counter

и не забудьте поменять цвет текста на отличный от
фона, например - белый =)
выходим из режима редактирования (например
сделаем даблклик вне рабочей области)
выделив мувиклип, по правой кнопке
мыши заходим в контекстное меню и выбираем ACTIONS
вписываем в окошко
только одну строчку: #include "counter.mx"
Откроем блокнотик
=). И напишем в файле следующие строки:
//. . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . .
onClipEvent(load) { loadVariables("./counter.php",this,"POST"); } onClipEvent(data) { this.counter
= this.n; } //. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . .
Сохранимся с именем "counter.mx" в той же
дирректории что и файл 'COUNTER.FLA'. И на этом создание нашей клиентской
части завершено. Осталось только нажать PUBLISH и скомпилировать
файл.
То, что я сейчас описал настолько просто, что меня даже не сильно
затруднит это теперь растолковать ;)
onClipEvent(load) - событие,
которое срабатывает при инициализации клипа.
loadVariables - функция,
которая пошлет запрос на наш сервер по следующему
пути:
"./counter.php"
this - означает, что ответ
предназначен для СЕБЯ, т. е ответ придет в тот же объект из которого он был
вызван.
"POST" - это метод посылки нашего
запроса.
onClipEvent(data) - событие, которое произойдет, когда придет
ответ от сервера вместе со всей требухой целиком и полностью и вместе с
данными.
this.counter = this.n; - эта строка всего навсего присвоит
переменной "counter" (текстовое поле, помним?) значение
"n" - его мы опишем потом.
"n" - и будет содержать
некое число, которое пришлет нам наш скрипт "counter.php"
хе
хе. и все
Клиент готов... И будет жить...
//. . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.
РАСТАМАНСТВО?
ПХП...или... ПЫ-ХЫ-ПЫ? или ... Пых Пых
Пых...
Тока не будем спорится и ссорить насчет того, кто
круче Перловка или Овсянка-Сээр
ПХП - круче, и точка. Удобнее.
...Мне.. удобнее... ;)=
И вам понравится...
Создадим новый
фаил в том же блокноте и скопируем нижесодержащиеся строчки, а потом сохраним
это все с "что в иииимени тебеееээээ моййооооммм" именем файла
"counter.php" снова в ту же дирректорию, что и другие
файлы...
Может это несколько некорректно, но я ужасный неряха и
обожжжжаю сваливать всякие разные файлы в одну кучу вперемешку и
вперепрыжку... Всегда есть возможность нажать ctrl+F4 или F8
=)...
прим. переводчика бумаги: все, что начинается с "//"
можно в файле стереть нафиг, это просто комментарии... и читать будет
проще.
//---------------------------- САМ СКРИПТ
--------------------------- <? $filename =
"counter/counter.txt"; // зададим имя файла, который будет хранить
нашу великую цифру $testfile=file_exists($filename); // протестируем наличие
этого файла в указаном месте ф-я вернет true/false if($testfile) // если
true, то файл существует, можно с ним
работать {
$fp=fopen($filename,"r+"); // откроем файл
("r+" - говорит о том, что файл открывается на
чтение+запись) flock($fp,1); // заблокируем файл, чтобы два процесса не
ввязались в борьбу за обладание им
$counter=file($filename); // запомним
содержимое файла в массив $counter fputs($fp,$counter[0]+1); // и запишем это
же содержимое внутрь текстового файла, но прибавив единичку $numb =
$counter[0]+1; // тут мы просто запомним "а скока их там всего этих
цыфирь" echo ("&n=$numb&"); // а вот эта строчка и
пошлет нужную нам строку во флэш
// например, если мы не из флэша вызовем
скрипт, а просто из браузера // пропишем путь к нему как
http://mydomen.ru/myscripts/counter.php // То увидим страничку с числом зверя
;), например &n=155996600456& ОГО, скока
посетителей.
flock($fp,3); // разблокируем файл fclose($fp); //
закроем его, он нам больше не
нужен }else{ mkdir("counter",0700); // ".. а мне плевать -
уходи...я агент 007" создадим дирректорию для файла, в котором будет
храниться число для счетчика (а 0700 это права доступа $fp =
fopen($filename,"w+"); // а вот если в наличии файла не оказалось, то
провернем такую процедДуру // откроем файл, но уже на "W+" '
запись, но если файла нет, то скрипт его создаст fputs($fp, "1");
// запишем туда число 1, поскольку он еще пустой и первенький наш... =)... аж
слеза прошибла... fclose($fp); // и закроем его } // УСЕ, ЕНЖОЙ, и пусть
энвиронмент попляшет вместе с нами в диком
буги-вудууу... ?> //----------------------- конец фыльма
----------------------
//. . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . 4. КАК ЖЕ ЭТО ВСЕ РАБОТАЕТ...
Теперь
у нас есть все запчасти для использования, а именно:
"Клиент" -
это файл "counter.swf" "Сервер" - это наш
ПыХыПы.
Чтобы все это заработало, побросайте это на сервере в одну
дирректорию (не забудьте задать права доступа для дирректории (в фаре жмем
КНТРЛ+А = RWX RWX RWX)) и запустите из браузера, сначала
"counter.php" пример:
http://wb.legus.ru/test/php/counter/counter.php
потом
"counter.swf" пример:
http://wb.legus.ru/test/php/counter/counter.html
и понажимайте F5, а
тоскливо наблюдать одну только единичку ;)= (правда кэш нужно-таки чистить,
постоянно)
При загрузке файла "counter.swf" он обратится, с
помощью "loadVariables();" по заданному пути к скрипту
"counter.php" Скрипт же откроет файл "counter.txt" ,
посмотрит туда, узнает какое там лежит число, затем прибавит еденичку, затем
выдаст это в виде ответа (echo) - ФЛЭШУ и закроет
файл.
"counter.swf" примет ответ скрипта и с помощью события
(data) отобразит в текстовом поле этот ответ.
Но если хочется, чтобы
счетчик был навороченым и крутым, не обязательно отображать какие-то там
цифры в поле. Фишка в том, чтобы получить ответ. А уж как его потом
использовать зависит от мастерства флэшера.
Например мой счетчик на сайте
немного более продвинут и не будет безумно крутится при каждом рефреше
страницы, а крутанется только через день. Поскольку я заюзал метод
"POST" я могу совершенно прозрачно передавать скрипту любые свои
безумные параметры...
Что ж.. изучаем ПыХыПы и все получится ;)= //. .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Все копирайты можно тоже удалить, все-равно скрипт, кроме вас никому
не интересен, Зато потом можно будет растопырить пальцы и
сказать
function() { trace(Я - КРУТ) //
undefined }
//------------------------------------------------------------------------- //
Copyright © Willyam Bradberry 2002 // [flash - master]
mailto:willyam@newmail.ru // wb@3wgraphics.net
//-------------------------------------------------------------------------
ЗЫ:
ФЛЭШЕР не забудь громко крикнуть ВСЛУХ "СПАСИБО УИЛЬЯМ
БРЭДБЕРРИ" это поможет немного тебе избавиться от ЧСВ (чувство
собственной важности) и чуть -чуть помолодеть...
ЗЗЫ:
пояснялки:: "в фаре жмем..", это заначит открываем программу
FAR http://www.rarsoft.com и подключаемся по ФТП к серверу (alt+F2 >
FTP). //. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . "создадим дирректорию для файла, в котором будет храниться число
для счетчика (а 0700 это права доступа)" скрипт устроен так, что
проверит наличие файла и выполнит эту строку только один раз, в его(файла)
отсутствие //. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . "0700" - про права доступа можно прочитать во всяких
хелпах по ПХП и ЮНИКС-ос
Литература по FLASH
|