В этом обучающем видео-скринкасте я рассказываю о том как заменить курсор в Flash приложении на свой(картинку), средствами ActionScript3, для разработки используется бесплатный редактор FlashDevelop. Это мой первый скринкаст, поэтому просьба сильно не пинать. Предлагайте темы для новых скринкастов.

В продолжении скринкаста я расказываю как правильно позиционировать свой курсор-картинку, а так же, демонстрирую его работоспособность при клике.

 

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

Для начала скачиваем все необходимое:

  1. FlashDevelop. последний на момент написания статьи 3.2.2
  2. Adobe Flex SDK.
  3. Debug Flash Player для вашего барузера.

Если у вас еще не стоит Java 1.6+, то ставим ее, а для пользователей XP нужно сделать апгрейд update .NET 2.0 framework to SP2.

Читать далее…

 

Когда мы отправляем на сервер запрос одной и той же структуры и с одними и теми же параметрами, он кешируется, поэтому когда нам нужно запросить новую порцию данных по этому же url, браузер говорит flash, что эти данные у него уже есть и запроса на сервер не делает. Это относительно распространенная проблема с кешированием в Internet Explorer. У меня она возникла при написании чата, требования к чату были такими, что можно было использовать только flash (только он помогает победить same-origin-policy), нужно было отправлять запросы к домену отличному от текущего. Подробнее о чате напишу как-нибудь в другой раз, про все эти политики безопасности и ограничения, и что предлагает flash для решения этих проблем. Итак, как исправлять ?!

Flash.

Решение в принципе лежит на поверхности, подобным пользуются не только в flash, это распространенный способ избежать кеширования в браузере. Мы просто добавляем уникальный параметр в запрос. В данном примере я использую timestamp через метод класса Date() – date.getTime(), который передаю в качестве параметра key в запросе.


var request:URLRequest = new URLRequest("http://domain.ru/chat_receive.php");
var variables:URLVariables = new URLVariables();
 var date:Date = new Date();
 variables.key = date.getTime();

 request.data = variables;
 request.method = URLRequestMethod.GET;

Важно передавать параметры через URLVariables, первый раз я просто добавил параметры прямо в строку url “http://domain.ru/chat_receive.php”, почему-то IE это не очень понравилось, и он все равно все успешно кешировал.

Back-end.

Теперь делаем фикс на back-end, у меня это PHP, но реализации для других языков отличается не существенно. Зачем мы это делаем ? Способ который помог избежать проблемы, не отключает кеширование, то есть информация все равно попадает в кеш, и теперь ее на порядки больше. Для того чтобы не забивать кеш браузера, мы ставим в заголовок параметр Expires. А также отдаем в заголовке параметры, что кешировать не надо (в отличие от других браузеров ie этого не слушается, для этого мы и передавали уникальный параметр). Вот что у нас получилось:

header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); // disable IE caching
 header("Last-Modified: " . gmdate( "D, d M Y H:i:s") . " GMT");
 header("Cache-Control: no-store, no-cache, must-revalidate"); // HTTP/1.1
 header("Pragma: no-cache"); // HTTP/1.0

Все Internet Explorer побежден.

 

Хотелось бы провести небольшой обзор интересного редактора FlashDevelop. Каждый работавший в Adobe Flash CS с ActionScript обращал внимание на неудобство работы с кодом в этом IDE, а так же отсутствие навигации по файлам проекта, да что там, на отсутствие вообще такого понятия, как проект. Возможно есть такие, кто сейчас скажет: “Серьезный проект, да тебе во Flex”. С одной стороны не могу не согласиться, во Flex работы с проектами на уровне, да и плагин Flex к Eclipse очень хорош. Но работа с Flex, это работа в MXML. А что делать когда нет желания-умения-возможностей. Итак, если все выше написанное вам близко, вам под кат. Читать далее…

 

Судя потому, что этот поисковый запрос очень популярен на моем блоге, считаю своим долгом донести до общественности такую вещь, как замена курсора в as3.

Итак, заменяем курсор Читать далее…