пятница, мая 02, 2008

FSCommand exec и передача параметров

Столкнулся с такой проблемой:
необходимо вызывать exe файл c параметрами из flash projector exe.
Как известно, параметры передавать в fscommand("exec", "file.exe") нельзя. Да и еще к тому же в Windows XP и выше нельзя вызвать bat-файл.
Здесь более подробно об этой проблеме и решение.
Большое спасибо этому человеку за возможность запускать батники, но проблема передачи параметров без использования сторонних платных тулов остается.
Поэтому в голову пришел немного кривой, но для моей задачи подходящий и работающий вариант:
скачиваем бесплатный тул:
sfk

далее создаем такой батник:
for /F %%i in ('sfk fromclip') do file %%i

батник называем, к примеру, executor.bat
Чтобы его запустить, качаем proxy.exe, и переименовываем его в executor.exe.

далее все файлы кладем в папку fscommand.
Т.е. структура должны быть в итоге такая:
yourFlashApp.exe
fscommand/
--file.exe
--executor.exe
--executor.bat
--sfk.exe

А в вашем флэш-приложении должны быть такие строки, где вы хотите запустить file.exe c параметром -v, к примеру:
System.setClipboard("-v");
fscommand("exec", "executor.exe");

Смысл всего таков:
мы копируем наши параметры в clipboard windows,
затем запускаем executor.exe, который позволяет нам запустить наш executor.bat.
В котором, в свою очередь при помощи sfk.exe мы вызываем file.exe с параметром, вытащенным из windows clipboard.

Вот как-то так.
Надеюсь, кому-нибудь это пригодится.

понедельник, октября 01, 2007

Новости от AsWing

У AsWing выходит GuiBuilder (1.0 beta released).
Для тех, кто не знает, AsWing это "java-подобный" framework c полностью своими UI-компонентами для actionscript 3 и 2. В свое время я писал большое приложение под actionscript 2 с использованием AsWing. Для программиста фреймворк очень ладный, складный и т.п., в общем приятно было с ним работать:) но были проблемы с производительностью. Все-таки actionscript 2, 8-ой плеер... С as3, думаю, дела обстоят куда лучше.
И есть хороший пример - FWindows. Очень забавная штука:)

среда, ноября 22, 2006

Документирование AS3 кода

Привет. Давненько я что-то ничего не писал...)

Столкнулся здесь с проблемой построения документации по Flex-проекту. Первое, к чему обратился, был ASDoc от Adobe. Может быть, у меня очень кривые руки или еше что:), но построить доку с помощью тулзы от Adobe я так и не смог в том варианте, каком хотелось бы. Куча ошибок сразу вылезает, вылезают dependencies, которые лезут документировать "родной" flex-код. Почему-то параметр exclude-dependencies не помогает... На сайте labs.adobe.com приведен список багов, которые тоже не радуют... В общем я немного потыкался, и желание использовать такой tool пока отпало. Зашел на osflash.org, а там:


  • ZenDoc, которые как раз обновились для AS3
  • NaturalDocs, которые тоже недавно включили поддержку AS3

ZenDoc, очень простая тулза, написанная на php (с UI-интерфейсом), без поддержки пакетной документации (пока, но вроде обещают) и документации mxml. Работает на Apache (как построение доки, так и просмотр, что не очень удобно). В общем очень простенький инструмент, который сразу заработал. Но, конечно, отсутствие пакетной документации пока серьезный минус.

NaturalDocs - вещь:)! Написан на perl - command line (соответственно, для работы нужен Perl). Но весь мой проект (и as и mxml) обработал сразу - никаких ошибок. Все пакетно, с построением иерархий и т.д. Правда, формат NaturalDocs не очень привычен, но, думаю, там что-то можно еще настроить, чтобы жизнь с этим инструментом стала лучше. Также стоит отметить, что NaturalDocs работает еще с кучей языков, помимо AS3 и AS2.

В общем, пока мне больше всех понравился NaturalDocs. Самое главное, простой в использовании.

понедельник, сентября 25, 2006

Cross domain xmls

Подсмотрено у Aran Balkan.

Замечательный сайт www.crossdomainxml.org. На сайте выложен список известнейших web-сервисов, которые оказались такими молодцами, что "положили" себе на сервера crossdomain.xml файлы. В которых прописано allow-domain="*". Пока, правда, этих сайтов всего 4. Но и это уже хорошо.

Также на сайте присутствует полезная информация по crossdomain политике.

четверг, сентября 14, 2006

Flash и myspace.com

Если кто не знает, относительно недавно портал myspace.com несколько изменил политику безопасности в отношении встраиваемых на свои страницы swf-роликов.
Я прочитал некоторые выводы в блогах и на форумах, но в основном там много паники:) и толком ничего непонятно.
После моих собственных экспериментов, я сделал следующие выводы.

При встраивании swf на страницу пользователя myspace.com:

<embed src="..../flash.swf" />

Автоматически добавляются атрибуты:

<embed
allowScriptAccess="never"
allowNetworking="internal"
src="..../flash.swf" />

Первый атрибут allowScriptAccess со значением "never" действует на все версии flash player, и означает, что взаимодействие swf с JavaScript'ом страницы запрещено.

Второй атрибут allowNetworking со значением "internal" действует на flash player 9 (т.е. на ролики, написанные под 9-ую версию). Значение "internal" означает, что любое взаимодействие swf с browser API (в частности, с API для взамодействия с JS) запрещено. Нельзя даже вызвать getURL("some address"). Загрузка информации с внешних источников (картинки, другие ролики, xml - при наличии crossdomain разрешения сервера-владельца) разрешена.

Только без паники...

четверг, августа 31, 2006

AutoFilledInput update

Привет. Вот я и вернулся из отпуска.
Выкладываю небольшой апдейт моей компоненты autofilledinput, о которой я писал чуть ниже.
Обновления:

  • выпадающий список ранее введеных в текстовое поле строк теперь сортируется по частоте их использования

  • в файлы сборки компоненты добавлен manifest.xml, таким образом, теперь при прописывании xmlns для моей библиотеки нужно писать xmlns:fishbounce="http://fishbounce.blogspot.com"


Пока все.
Соответсвенно обновлены файлы для скачивания.
Файлы:
Скачать zip-архив с fishbounce.swc
Скачать исходный текст
Пример работы компоненты (в виде проекта под Eclipse IDE с плагином Flex Builder 2)

понедельник, августа 14, 2006

Flex-компонента AutoFilledInput

Представляю вашему вниманию компоненту AutoFilledInput - расширенный TextInput c возможностью автозавершения ввода. Все, что вводит пользователь в это текстовое поле, запоминается на его компьютере в shared object файле, а потом просто вытаскивается оттуда.
Небольшая документация (пожалуйста, внимательно прочитайте ее перед использованием компоненты):

property enterCommitEventType - тип event'а, по которому ввод считается завершенным (по умолчанию стоит FlexEvent.ENTER, т.е. когда пользователь что-то ввел и нажал Enter). По этому событию введенная строка будет сохраняться. Таким событием может быть, например, focusOut...

property autoFillStoreName - имя shared object файла, в которое будут записываться введенные строки (по умолчанию "autofillstore").

property maxRowCount - максимальное количество выводимых вариантов автозаполнения в выпадающем списке (по умолчанию 5).

method activateAutoFill(autoFillStoreName : String = null, enterCommitEventType : String = null) : void - активация режима автозавершения ввожа пользователя. В качестве параметров можно передать имя shared object файла для сохранения введенных строк, а также тип Event'а, по которому ввод будет считаться завершенным.

public function deactivateAutoFill() : void
- деактивация режима автозаполнения. "Превращение" компоненты в обычный TextInput.

public function clearAutoFillStore() : void - удалить shared object файл с сохраннеными строками.

Файлы:
Скачать zip-архив с fishbounce.swc
Скачать исходный текст
Пример работы компоненты (в виде проекта под Eclipse IDE с плагином Flex Builder 2)

Чтобы воспользоваться компонентой, нужно включить fishbounce.swc в список используемых библиотек в свойствах вашего flex-проекта. Чтобы встроить AutoFilledInput в mxml-файл, нужно прописать в аттрибутах тэга Application новое xmlns (пространство имен), например:

xmlns:fishbounce="com.fishbounce.controls.*"

тогда в mxml-файле AutoFilledInput вставится так:

<fishbounce:AutoFilledInput />


Если будут замечания, пожелания или найденные "косяки" в работе компоненты, пишите в комменты.