19 мая - Adobe CS6 Launch Party в Киеве. Регистрируемся!  
FlexiPedia Wiki on Adobe Flex
Флэш Потрошитель - Жизнь вокруг технологииЖизнь вокруг технологии

Флэш Потрошитель этот | тот | 1.0

С 09.09.2002
  • Коллекция багов Flash
  • Ссылки для начинающего аниматора
  • Flex для PHP-разработчиков
  • Как вы используете Flash?

Поток сознания

Флэшер-аноним replied on Вчера вышел Flash CS6, и это -- наш повод снова встретиться!:

давно уже конечно было ясно, но теперь с выходом новой версии флеша html5 выглядит как дополнительная функция к cs5.6))

6 дней назад

Флэшер-аноним replied on Новые, лучшие редакторы кода:

...если речь о front end. Для back end'а единственно верный выбор - текстовый редактор Midnight Commander'а :) Вообще просто хотел высказать (наверно, банальную) мысль о том, что идеальная IDE должна строиться именно на "максимально быстром" текстовом редакторе. Путь визуализации - хорошая идея, но опасная. На данный момент "визуальность" должна возникать в мозге программиста - и не понимаю, почему все так стараются перенести нагрузку с этого самого ("несчастного"?!) мозга на что-то иное :) - с помощью визуализации, прививания жёстких принципов ООП, шаблонов проектирования и т.д. Необходимо что-то более радикальное, что не будет строить железные заборы на пути свободной мысли... :)

1 неделя назад

Флэшер-аноним replied on Adobe вместе с Грантом Скиннером разрабатывает экспорт флэш-проектов из Flash CS6 в Canvas:

[URL=http://i.cx/29z7][IMG]http://i069.radikal.ru/1202/03/9f40d01e407f.png[/IMG][/URL] [b]скачать программу рыбалка 1.6 [/b] [b]скачать проигрыватели для компьютера с картинками [/b] [b]окна приветствия для windows xp скачать [/b] [b]скачать miranda русская версия [/b] [b]скачать original soundtrack driver parallel lines [/b] bb.txt open error база велкома скачать 2009 скачать пакет обновления для среды скачать бесплатную игру кто хочет стать миллионером для пк виста хом премиум скачать скачать поезд train 2008/1400 mb скачать драйвера для аудио реалтек section 8 скачать лицензионную скачать wwe legends patch скачать utorrent 1.6.1 rus visual basic 6.0 скачать скачать антихакер касперского скачать catalyst 6.2 win98 евгений немец скачать kassy 071 скачать скачать программу антропометрии http://beta.purifying.info/viewtopic.php?f=2&t=326117 http://dragonphoenix.brinkster.net/phpbb/phpbb3/viewtopic.php?f=1&t=480248 http://www.erotikapromuze.cz/viewtopic.php?f=4&t=131850 http://programaradar.com.br/forum/viewtopic.php?f=2&t=1062486 http://yfb.messageboard.nl/forum/viewtopic.php?f=1&t=59502

1 неделя назад

Флэшер-аноним replied on Вчера вышел Flash CS6, и это -- наш повод снова встретиться!:

Скачал. Посмотрел. CreateJS - фуфел, шейп твин не поддерживает, маски не поддерживает, эффекты не поддерживает и тд. В общем можно только двигать туда сюда, ну и вложенную анимацию поддерживает. К паблишу для air/android добавили пару галочек - молодцы. В общем изменений максимум на adobe flash cs5.6.

2 недели назад

Флэшер-аноним replied on Вчера вышел Flash CS6, и это -- наш повод снова встретиться!:

Вот именно сегодня очень захотелось пощупать функцию экспорта в CreateJS, а именно сегодня беты уже нет, скачать еще нельзя...

2 недели назад

Флэшер-аноним replied on Вчера вышел Flash CS6, и это -- наш повод снова встретиться!:

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

3 недели назад

Флэшер-аноним replied on Новые, лучшие редакторы кода:

Хм, я в этом начинающий, буду знать каким редактором лучше верстать, спасибо!

3 недели назад

bimawa replied on Новые, лучшие редакторы кода:

+1 sublim`у достойная замена GVIM. Как текстовый редактор с большим комьюнити и встренным python интерпертатором, и полностью податлев на костоматизации. нет смысла сравнивать IDE с текстовым редактором. Очень удобно писать erlang программы. Есть плагин для Юнитестов.

3 недели назад

Rost replied on Новые, лучшие редакторы кода:

Кол-во строк в файле с кодом - важный параметр. Есть мнение, что оно не должно быть слишком большим. Для удобства навигации по нему.

Легковесные редакторы хороши еще и тем, что в них бытрее появляются инновации. Например, обрати внимание на мини-текст в правом верхнем углу скриншота для Sublime - по нему можно скроллить мышкой, мгновенно перемещаясь в нужное место кода.

Textastic как раз использует тачевые возможности - для этого у него есть клавиши-компасы (есть на скриншоте). Такая клавиша-компас имеет пять значений. Если просто нажать ее - сработает значение по умолчанию (символ посередине). Остальные четыре символа можно выбрать, если нажать и протянуть пальцем в сторону одного из них.

Визуальное программирование -- это очень интересная, но небанальная тема.

Ведь текст имеет иную структуру, чем изображение.

Текст - условно одномерный, линейный. Изображение - фиксированно двумерное (или фиксированно трехмерное).

Кажущаяся одномерность текста обманчива, особенно когда текст становится кодом. За счет функций (замыканий) и условных переходов текст программы становится многомерным. Даже вне программирования существуют многомерные тексты - хорошая книга может содержать внутренние указатели и ссылки на части самой себя. Поэтому текст - очень продвинутый способ работы с сознанием читателя (или компилятором).

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

До сих пор попытки визуального программирования не заходили дальше имитации обычного - надергали компонентов, но потом - все равно пишем код.

Визаульное программирование - это не способ создавать код мышкой (или тачами), а способ программировать другие каналы восприятия - не аналитические (компилируемые), а эмоциональные.

Кстати, ближе всего к этому подошел флэш. Но потом его убили бизнесом, а из трупа сделали геймдев :)

Так визуальное программирование остается мечтой масс и уделом гениев-одиночек.

3 недели назад

Dan replied on Новые, лучшие редакторы кода:

Брррр... Легковесные редакторы кода хороши только для легковесных (~20 строк кода) программ. Для всего остального - Idea и FDT.

А редакторы для мобильных устройств зачем-то делают такими же, как на десктопах (у которых есть нормальная клавиатура), при этом совершенно не используя возможности тач-скринов. Думаю, через годик-два появятся наконец мобильные редакторы, где можно будет писать программу чисто жестами, без "волшебных" кнопок.

 

3 недели назад

Более старые 
Главная › Блоги › Блог mycarisgood

Основы работы с SharedObject на примере реализации буфера обмена во Flex

Возникла задача реализовать буфер обмена между несколькими экземплярами Flash-приложения. Представьте вот такой объект.

Снимок объекта Flash

Открываем Flash в двух окнах браузера. В одном пишем «Hello!» и нажимаем кнопку «Write». Переключаемся в другое окно, нажимаем кнопку «Read» и хотим, чтобы в текстовом поле появилось «Hello!».

Такое возможно. Но оказалось, что сделать это не так уж просто.
Читаем, как.

Системный буфер обмена

Сначала я, конечно, решил использовать системный буфер обмена. Однако был неприятно удивлен тем, что Flash может писать в буфер, но читать из него не может!


System.setClipboard('Hello!');

Функции getClipboard() просто нет (ввиду соображений безопасности). Об этом можно почитать здесь.

Итак, системный буфер обмена не годится.

Local Shared Object

Flash позволяет сохранять небольшой объем данных на локальном компьютере пользователя. По сути это похоже на HTTP cookies. Для этого существует класс SharedObject.

SharedObject бывает:

  • удаленный (Remote Shared Object)
  • локальный (Local Shared Object)

Принцип первого механизма заключается в хранении разделяемого объекта на сервере и организации к нему совместного доступа нескольких клиентов. Для этого нужен Flash Media Server.

Второй механизм позволяет хранить информацию на локальном компьютере пользователя. Это то, что нам нужно!

Хочу обратить внимание, что объем хранимой информации должен быть небольшим. Максимальный размер задается в настройках Flash (по умолчанию около 100 Кб).

Пользоваться Local Shared Object просто. У объекта должно быть имя, по которому его можно найти. Я назвал объект «test». Вот так можно прочитать его из хранилища или создать, если объекта с указанным именем нет.

var lso: SharedObject = SharedObject.getLocal('test');

Информация у Shred Object хранится в поле data (типа Object). Туда можно записывать объекты стандартных типов Action Script. Например, так:

lso.data.text = 'Hello!';

После того, как информация записана в объект, его необходимо сбросить на диск.

lso.flush();

Рабочий пример

Перед Вами код рабочего примера, выполняющего поставленную задачу. Кнопка «Write» записывает содержимое поля ввода в Shared Object, кнопка «Read» делает обратную операцию.


private function read(): void
{
var lso: SharedObject;
lso = SharedObject.getLocal('test');
c_Text.text = (lso.data.text == null) ? '' : lso.data.text;
lso.flush();
}


private function write(): void
{
var lso: SharedObject;
lso = SharedObject.getLocal('test');
lso.data.text = c_Text.text;
lso.flush();
}

Особенности

Обратите внимание на то, что в функции read() после прочтения информации из Shared Object вызывается метод flush(). Делать это необходимо для того, чтобы Flash не закэшировал объект. Иначе, когда мы второй раз попадем в функцию read(), вызов

lso = SharedObject.getLocal('test');

не прочитает SharedObject с диска заново.

На этот момент обращает внимание автор интересной статьи «A Flash Clipboard using Local Shared Objects». Однако у меня пример работал и без flush() при чтении.

Я же столкнулся с другой проблемой. Первоначально lso был не локальной переменной в функциях read() и write(), а членом класса. То есть код выглядел так:


private var lso: SharedObject;


private function read(): void
{
lso = SharedObject.getLocal('test');
c_Text.text = (lso.data.text == null) ? '' : lso.data.text;
lso.flush();
}


private function write(): void
{
lso = SharedObject.getLocal('test');
lso.data.text = c_Text.text;
lso.flush();
}

Тут и возникла проблема кэширования Shared Object. Решением было либо писать в конце функций read() и write()

lso = null;

либо же сделать lso локальной переменной.

Таким образом, кэширование Shared Object является несколько непредсказуемым процессом. Лучше подстраховаться: вызывать flush() после чтения и иметь ссылку на объект в качестве локальной переменной.

Итоги

Local Shared Object – наиболее подходящий механизм для реализации буфера обмена во Flash. Однако важно учитывать странные особенности его кэширования.

А есть ли другие средства? Да, есть. Для организации взаимодействия Flash объектов, запущенных на одной локальной машине, также существует механизм Local Connection. Почитать про это можно на сайте Adobe. А вот здесь можно почитать про механизм SWFBridge (за ссылку спасибо пользователю yesutin).

Ссылка на эту статью в моем журнале.

  • flex
  • LocalSharedObject
  • LSO
  • SharedObject
  • Статьи
- mycarisgood, чт, 04/02/2010 - 17:02
  • Блог пользователя mycarisgood

Комментарии

Если имена у флешек будут разные, то не сработает.
Статью надо было назвать "Основы работы с SharedObject".

2morrowMan http://flashrush.com 14:17 06/02/10

2morrowMan, акцент в статье я пытался сделать на особенности использования SharedObject для вот такого обмена. Я действительно потратил кучу времени, чтобы избавиться от кеширования.

mycarisgood http://svitter.ru 18:49 06/02/10

Сработает для любых флешек в домене, если в getLocal прописать одинаковый path

Diomas (не проверено) 15:39 10/02/10

SWFBridge вам в помощь

yesutin http://blog.yesutin.com 16:39 06/02/10

Спасибо за ссылку. Но мне кажется, что для реализации буфера обмена проще LSO.

mycarisgood http://svitter.ru 18:58 06/02/10
3

Начали статью с перебора возможных средств, а остановились на пол пути. Надо было бы уже закончить описание остальных средств хранения и передачи данными между двумя флешками и почему они вам не подошли.
ЗЫ: Согласен с тем, что было бы неплохо поменять заголовок статьи.

a_w http://blog.actualwave.com/ 20:05 06/02/10

По просьбам трудящихся заголовок-таки поменял )

mycarisgood http://svitter.ru 21:33 06/02/10

В первом примере -
so.flush();
опечатка)
Для флешек с разными именами

SharedObject.getLocal('test').data.text= 'hello';
SharedObject.getLocal('test').flush();

kyzi007 20:55 06/02/10

Спасибо, исправил.

mycarisgood http://svitter.ru 21:31 06/02/10

А что мешает использовать LocalConnection если открываются оба окна браузера?

andyone (не проверено) 21:12 06/02/10

Здесь был смысл не отправить сообщение, а именно организовать буфер обмена. Участников обмена может быть не два, а сколь угодно много.

mycarisgood http://svitter.ru 21:27 06/02/10

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

А буфер обмена самим названием как бы намекает, что он расположен где-то отдельно от приложений.

Dan 22:41 06/02/10

Текст можно скопировать и просто так, такой пример я привел для простоты. Жизненная же задача - копировать какие-то сложные объекты, актуальные только в контексте конкретного Flash приложения.

mycarisgood http://svitter.ru 13:11 07/02/10

Статья была бы гораздо интереснее, если бы более подробно рассмотрели именно проблемы: т. е. как и когда возникают проблемы с кешированием, как это проявляется и т.д.

Dan 22:44 06/02/10

Именно об этом подраздел Особенности.

mycarisgood http://svitter.ru 22:52 06/02/10

не совсем понятно зачем передавать инфомацию из одного окна в другое ... да и ещё таким странным способом. Если бы я делал это "чудо техники" то реализовал бы через ExternalInterface и явасрипт куки. Незнаю работало бы или нет, но через SO не стал бы даже пробовать

Artem Brigert http://www.brigert.com 02:00 07/02/10

Для Flash LSO - это то же, что для браузера куки. Принцип абсолютно одинаковый.

mycarisgood http://svitter.ru 04:30 07/02/10
Цитата:

Если бы я делал это "чудо техники" то реализовал бы через ExternalInterface и явасрипт куки

И какой от этого выигрыш?

Цитата:

через SO не стал бы даже пробовать

Я, кстати, давно заметил, что многие новички почему-то боятся SO.

Dan 05:30 07/02/10

Smile

что многие новички почему-то боятся SO.
я хорошо знаю не только как работает SO но и прекрасно знаю как они работают даже на FMS, у меня где-то даже чат есть который работает с SO на FMS Wink я его делал, чтобы посмотреть что лучше SO или простой Call тудасюда

Artem Brigert http://www.brigert.com 13:57 07/02/10

О, кстати. С Remote Shared Object у меня были проблемы. FCS почему-то присылал не актуальные значения, а предыдущие.
Поэтому я плюнул и решил таки делать через call.

Dan 18:11 07/02/10

незнаю... на 3.5 всё вроде работало

Artem Brigert http://www.brigert.com 20:12 07/02/10

не актуальные значения, а предыдущие.
а ... и кстати когда я писал xml сокетсервер на c# я сталкивался с тем что сообщения с сервера приходили именно так.
Причина была в том что сообщение не было закрыто nullbyte приходилось к каждому сообщеню с сервера лепить nullbyte в конце и всё работало.

Artem Brigert http://www.brigert.com 22:27 07/02/10

0_о? SO же удобней.

Nirth http://blog.kiichigo.eu 13:54 07/02/10

а теперь я выставляю размер памяти для SO в ноль и розовые облака разрывает на куски

Valentin Vladimirovich (не проверено) 15:09 07/02/10

а если еще и монитор выключить, то вообще страшно предположить что будет

fernando costa http://www.makeflashnotwar.com/ 15:21 07/02/10

Очень опрометчивое высказывание по поводу но читать из него не может! есть класс Clipboard есть контекстное меню в котором есть и Копировать и Вставить также есть горячие клавиши к этим действиям (Ctrl+C Ctrl+V) правда есть ограничения Smile но это как бы не к вопросу о том что совсем нельзя никак читать из буфер в флексе либо пример который вы описываете притянут за уши к контексту Local Shared Object
Вот примерный код что бы использовать контекстное меню и буфер обмена

<mx:Application
....

public function initClipboard():void
{
...
context = new ContextMenu();
context.clipboardMenu = true;
context.clipboardItems.paste = true;
context.clipboardItems.copy = true;

contextMenu = context;

addEventListener(Event.PASTE, pasteHandler);
addEventListener(Event.COPY, copyHandler);
addEventListener(Event.CUT, cutHandler);
}

private function copyHandler(e:Event):void
{

Clipboard.generalClipboard.clear();
Clipboard.generalClipboard.setData(ClipboardFormats.TEXT_FORMAT, "Hi mycarisgood");
}

private function pasteHandler(e:Event):void
{
...
if(Clipboard.generalClipboard.hasFormat(ClipboardFormats.TEXT_FORMAT))
{
var clipString:String = String(Clipboard.generalClipboard.getData(ClipboardFormats.TEXT_FORMAT));

}

}

....
</mx:Application

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

ptica (не проверено) 04:41 13/02/10

Очень опрометчивое высказывание по поводу

flash.desktop.Clipboard - AIR only

http://livedocs.adobe.com/flex/3/langref/flash/desktop/Clipboard.html

mycarisgood http://svitter.ru 10:45 14/02/10

да бросьте во все верить =)

там же написано вот это:

BITMAP_FORMAT: a BitmapData object (AIR only)
FILE_LIST_FORMAT: an array of File objects (AIR only)
HTML_FORMAT: HTML-formatted string data
TEXT_FORMAT: string data
RICH_TEXT_FORMAT: a ByteArray containing Rich Text Format data
URL_FORMAT: a URL string (AIR only)

где нет сносочки (AIR only) как вы думаете где это можно использовать?

вот рабочий пример http://www.inpreso.com/inpresoscreens/demo/27622/ работает и шорткаты и контекстное меню и ваша идея открытия нескольких окон броузера с копированием из одного в другой.

ptica (не проверено) 00:44 17/02/10

Я кстати до сих по так и не понял зачем это нужно. ... копть из одного ипастить в другое ...

Artem Brigert http://www.brigert.com 11:29 14/02/10

Представьте дерево документов, хранящихся в базе данных. GUI - Flex. Мы открываем два хранилища (два разных дерева) в различных вкладках или окнах браузера. И можем скопировать документ или ветку из одного хранилища в другое. Для этого в LSO один экземпляр приложения сохранит текст вида [ID-хранилища, ID-документа]. А другой это прочитает.

Я писал уже ранее, что пример с Button-TextInput-Button синтетически упрощен.

mycarisgood http://svitter.ru 12:05 14/02/10
  • 1
  • 2
  • следующая ›
  • последняя »
Примечания: Статус документа => в процессе ·
Статьи · Идеальный клип · Персоналии · Глоссарий (уст.) · Что делать? · К началу ↑
© 2002-2012 Ростиславр · О проекте · Подписка на RSS · α-тестировани невероятного
Что такое OpenID?
  • Войти по OpenID
  • Скрыть вход по OpenID
  • Регистрация
  • Забыли пароль?
]]>
]]>

Навигация

  • Контакт