Показаны сообщения с ярлыком Странное. Показать все сообщения
Показаны сообщения с ярлыком Странное. Показать все сообщения

среда, августа 06, 2008

Список без подсветки и выделения элементов. Flex

Элементарная задача - есть компонент список (в моем случае - это TileList). Его элементы (itemRenderer'ы) сами обрабатывают мышиные события наведения/нажатия. Нужно, чтобы сам компонент списка не делал никаких подсветок и выделений элементов.
Казалось бы - тривиальная задача. Ничего подобного.
Одними стилями этого не сделать, что лишний раз доказывает несовершенство механизма скинирования Flex.
Решение - создание потомка и перекрытие методов:
protected function drawSelectionIndicator(...) и protected function drawHighlightIndicator(...)
Код прилагается.

Посильную помощь в раскопках оказала статья: Flex Tutorial - Image ItemRenderer.

Не понимаю, почему в одних случаях модель цвета #RRGGBBAA реализована, а в других - только #RRGGBB? Ведь как было бы удобно просто задать стиль themeColor="#00000000" и не парить мозг?

среда, июня 18, 2008

Zinc 2.5 и Flex 3.0: Проблема со звуком

Имеется довольно крупный, офф-лайн проект - каталог недвижимости. Столкнулся со следующей проблемой:
Было необходимо вставить звуковое сопровождение. Нет проблем - создаем объект Sound, загружаем MP3-файл. Отлаживаем кнопку вкл/выкл звука. Всё работает как часы.
Загоняем всё это инковый гроб. Звука нет. Проверяем событие загрузки, трейсим загруженный объем звукового файла - всё отлично грузится и под zinc-ом. Но звука нет.
Тут уже начинает трясти, т.к. конец дня и домой хочется, а проект с утра сдавать.
И вот, пробую другой MP3-файл. Работает! А разница - первый был 5 Мб, второй - 680 Кб.
Итак, делаем вывод (предположительный) - Zinc (или система) ограничивает размер памяти выделяемой для нужд приложения. Причем как-то брутально - без предупреждений и исключений.

среда, июня 04, 2008

Flash CS3 + Flex Component Kit = Мистика

Вчера полдня потратили на решение такой проблемы:
В течение некоторого периода времени, разрабатывался набор Flex-компонентов с использованием Flash CS и Flex Component Kit 1.1.2 (это расширение идет в поставке Flex SDK 3. Кстати, лежит в папке ...Flex SDK/frameworks/flash-integration).
Всё было превосходно, мы отлаживали, обновляли их... до вчерашнего дня. Flash CS3 просто сломался.
Команда "Convert Symbol to Flex Component" отрабатывает успешно, SWC генерится, но всё это бесполезно.

Симптомы такие (касаются конечно только FLA-файла с компонентом):
  • Перестали работать тайм-лайновые скрипты ВООБЩЕ - в любом клипе.
  • Компоненты, которые получаются в результате публикации SWC Flex не видит.
  • Сначала символ компонента назывался "myButton". Позже, он был переименован с именем компонента "roomButton". Однако, иногда, имя символа (и класса) неожиданно опять слетает на старое без какой-либо закономерности.

Однако, при компиляции этого файла на другом компьютере, всё сразу чинится. И даже после пересохранения в какой-то момент починилось и на сломаном. Но не надолго.

Кроме того, FLA-файл был скопирован на удаленный компьютер. При открывании файла с удаленного компьютера и работе с этим всё работает корректно!

Не помогла даже переустановка Flash CS3!

Подробности: Компонент представляет собой клип с Base Class: mx.flash.UIMovieClip. В поле Class прописано имя класса, который управляет этим клипом и является потомком UIMovieClip.

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

Из Flex Builder во FlashDevelop

Судьба распорядилась так, что временно приходится перебросить разработку Flex-проекта с Flex Builder на FlashDevelop. Заодно проверить, как последний с этим справится.

Установил последнюю версию FlashDevelop 3.0.0 Beta7. Теперь в пустом окне "Project" есть очень заманчивая кнопка "Import a Flex project", которой я немедленно и воспользовался. FD быстренько подхватил папку Flex-проекта и поместил в нее свой файл *.as3proj. Теперь можно спокойно работать как с обычным FD-проектом.

Первая нехорошая особенность - кодировка файлов, созданных FB распознается не правильно, и приходится постоянно корректировать кодировку файлов.

При компиляции проекта, получаем ексцепшн: "Error: null java.lang.NullPointerException...
Build halted with errors (mxmlc)"
. Хорошенькое дело. Ищем причину. Аналогичная ошибка имеет место не только у меня одного. Причина кроется в какой-то ошибке при внедрении шрифта. Как только я убрал

@font-face {
font-family: localArial;
font-weight: normal;
src: local("Arial");
...
}

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

четверг, мая 01, 2008

FLVPlayback и ошибка 1000. AS2

Столкнулся с тупейшей проблемой.
Есть FLVPlayback с именем video (со свойствами по умолчанию).
По клику на кнопку b1 указывается:
video.contentPath="URL существующего файла";
По клику на кнопку b2 указывается:
video.contentPath="URL несуществующего файла";
По клику на b1 видео воспроизводится. По клику на b2, видео, если оно воспроизводилось, останавливается, если нет - ничего не происходит. Теперь, при повторном нажатии на b1, мы ожидаем снова увидеть наше видео, но.... получаем ошибку:
1000: Unable to make connection to server or to find FLV on server
Что бы я не делал - вызывал разные методы типа stop/play, менял свойства компонента - всё безрезультатно.

После того, как state уходит в состояние CONNECTION_ERROR компонент работать отказывается.

Пока вижу одно решение - перед запуском видео, проверять наличие файла.

четверг, апреля 17, 2008

Изображения в текстовом поле. AS2

HTML-размета текстового поля, для Flash не менее 8-й версии, поддерживает динамическую загрузку изображений, путем указания тега <IMG>.

Поддерживаются следующие параметры тега:
src - URL изображения (JPEG, GIF, PNG, или SWF). Изображения не отображаются до тех пор, пока полностью не загрузятся.
id - имя клипа, который будет создан FP и в который загрузится изображение. Подробнее здесь.
width - ширина изображения в пикселах.
height - высота изображения в пикселах.
align - горизонтальное выравнивание изображения. возможны значения "left" и "right". По умолчанию - "left".
hspace - отступы от краев изображения по горизонтали. По умолчанию "8".
vspace - отступы от краев изображения по вертикали. По умолчанию "8".

Заметки:
  • Текст обтекает изображение по принципу, общепринятому в HTML-разметке.
  • Пока вертикальные размер и отступы изображения умещаются в расстояние от верха строчки до ее низа, нижняя строчка не смещается. (Например, при размере шрифта 11px и Line spacing 2pt, максимальный размер изображения по вертикали - 15)
  • Если перед тегом IMG есть текст (даже просто пробел), изображение вставляется в строку, расположенную ниже той, куда был вставлен тег.
  • Мы никогда не сможем поместить изображение в центр текстового блока.
  • Если указать только width или только height, с изображением ничего не произойдет.
  • Если встатвить подряд несколько абсолютно схожих тегов IMG, изображения выведутся в одну точку. Однако, стоит изменить один из параметров, как все последующие изображения выводятся ниже строкой.
  • Если задать подряд два тега IMG у которых параметры align установлены соответственно в "left" и "right", второе изображение всё равно будет строчкой ниже. А если второй тег поставить в конец строки - его изображение спустится уже на две строчки.
  • Еще одна ужасная особенность. Если свойство wordWrap = false, и тег IMG стоит первым, изображение просто не выводится.

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

понедельник, марта 31, 2008

Наследование от Button. AS2

Flash не перестает удивлять, хотя, казалось бы в AS2 всё уже изведано.

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

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

Итак, в AS2 строить логику с учетом модификации Button посредством наследования, лучше даже не пытаться - неблагодарное занятие.

понедельник, февраля 11, 2008

if vs. switch. SmartFoxServer

Странное поведение серверного интерпретатора в обработчике handleInternalEvent(evt) .
Прямая проверка срабатывает:
if (evt.name=="spectatorSwitched") {}
Однако вариантная проверка работать отказывается!
switch (evt.name) {
case "spectatorSwitched":
break;
}


Далее эксперементы показали, что необходимо приведение к строковому типу:
switch (String(evt.name)) { }

Делаем вывод - в неоднозначных и странных ситуациях первым делом приводим типы.

воскресенье, февраля 10, 2008

TextField+TextFormat.url работает только при включенном TextField.html. AS2

Потребовалось сделать текстовое поле ссылкой. Делать его с использованием HTML-разметки смысла небыло, поэтому просто снял с него getTextFormat, установил ему url="http://.../" и установил обратно setTextFormat. Однако ссылка не установилась. Поле по прежнему было неактивным. Чисто интуитивно, установил text_field.html=true и ссылка активировалась.

понедельник, января 21, 2008

Не работает скрипт в TimeLine. Нашлось объяснение. AS3

Наткнулся на решение проблемы описаной мной здесь.

На Labs.Adobe.com смотреть обсуждение "stop() not being called within movieclip".

Ответ на вопрос звучит так: Did you apply the Flex 2.0.1 patch for Flash CS3? The problem you are describing is fixed in that patch.

среда, января 09, 2008

Магическое число 6710886.35. AS2

Интересно, что для пустого клипа getBounds() выдает:
для _root:
yMax=6710886.35
yMin=6710886.35
xMax=6710886.35
xMin=6710886.35
для обычного клипа, почему-то округляет до 6710886.4.

Любопытно, что если это число перевести в HEX, получается 666666... Мистика.

понедельник, декабря 24, 2007

Flash 9 & Zinc. Интенсивная векторная анимация. Обвально съедаются рессурсы производительности

Задача - screensaver. Небольшой флэш-ролик (Flash 9, AS3) с довольно интенсивной векторной анимацией внедряется в Zinc-проектор. По истечении некоторого времени процессор забивается полностью и клип воспроизводится как "слайд-шоу".
Подозрение на то, что внедряется какой-то левый Flash Player 9 ActiveX, т.к. при проигрывании в обычном флэш-плеере или флэш-проекторе такой проблемы н возникает.

* * *

Вышеописанная проблема повторилась и при сборке Zinc-проекта на других компьютерах.
Используемая версия - Zinc 2.5.23. Она же и объявлена виновником.

* * *

При сборке в более свежей версии Zinc проблема пропала, но появилась новая - собственно купить эту свежую версию. Однако, времени на выбивание денег и другие бюрократические процедуры уже не было, и решили, что быстрее всё перевести в AS2, под которым всё работает как часы и поныне.

среда, декабря 05, 2007

Не работает скрипт в TimeLine. AS3

Странно, но у меня не получилось использовать скрипты (а именно вызов stop();) в таймлайне клипа.
Клип управляется также из внешнего скрипта. Внешний скрипт осуществляет gotoAndPlay на метку, и по прошествии нескольких фреймов, срабатывает фрейм со скриптом stop();
Скрипт не отрабатывает.
Надо искать решение...

пятница, ноября 30, 2007

gotoAndPlay каждый ENTER_FRAME - некорректная работа анимации. AS3

Столкнулся с проблемой:
Если каждый фрейм для MovieClip вызывать gotoAndPlay(label), перестает работать внутренняя анимация клипов типа MovieClip, расположенных в этом фрейме.
Переход осуществляется, но вложенные клипы не воспроизводятся.

среда, октября 31, 2007

Странно: значения параметров функции по умолчанию не могут быть public static const. AS3

Есть такой метод:

public function TKeyboardSettings(left:int=Keyboard.LEFT,right:int=Keyboard.RIGHT,up:int=Keyboard.UP,down:int=Keyboard.DOWN) {
this.left=left;
this.right=right;
this.up=up;
this.down=down;
super();
}


На Flex Builder 3 beta1 всё было ок, но после установки второй беты и (как я потом проверил, во FlashDevelop) flex стал ругаться на то, что я параметрам по умолчанию присваиваю константы класса Keyboard.

Текст ошибки:
Parameter initializer unknown or is not a compile-time constant.

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

* * *

Долго ковырялся - в FD заработало ни с того ни с сего. В FB вдруг в процессе редактирования выдало Source could not be found for flash.ui.Keyboard.RIGHT in ...\playerglobal.swc
Выходит криво встал билдер то...

* * *

Переустановил. То же самое и в FD опять началось... :(

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

Странное с отладкой в FD3

Перестал работать trace(). Не штатный дебагер, не FDTracer ничего не выдавали.
Долго пытался понять в чем дело - в итоге чисто интуитивно зашел в папку и запустил файл: "C:\Program Files\Adobe\Adobe Flash CS3\Players\Debug\FlashPlayer.exe"

После этого, сразу trace() снова стал работать.

На другом компьютере такой фокус не прошел. Да и не удивительно. Возможно причина в том, что на первом была установлена Debug-версия плеера вместе с Flex Builder. На втором же Flex не ставился. На первом что-то перенастроилось и Debug-плеер стал недоступен, но после его принудительного запуска все восстановилось. Но это всё догадки.

В итоге, есть простое универсальное решение. Зайти в настройки Installed Plugins > FlashViewer > ExternalPlayerPath и прописать "C:\Program Files\Adobe\Adobe Flash CS3\Players\Debug\FlashPlayer.exe".
Для того, чтобы открывалась именно Debug-версия в настройках проекта необходимо указать в Test movie > Open SWF in: External.
При таком выборе открывается нормальное окно флэш-плеера и создается сессия отладчика. При этом трейс выводится и в Output и в окно FDTracer.

FlashDevelop3. Ошибка плагина ASClassWizard

При установке плагина ASClassWizard перестает работать преобразование служебных переменных типа $(ItmTypPkg), $(ItmTypName), $(ItmName).

Прийдется обойтись без него... На официальном сайте про это были сообщения. Ждем новой версии.
Кстати, вернуть обратно шаблоны можно из "C:\Program Files\FlashDevelop\FirstRun\Templates\ProjectFiles\". Слава Богу, при инсталляции сюда тоже кладутся все необходимые программе файлы, что позволяет легко откатываться после неудачных модификаций конфигурации.

вторник, сентября 18, 2007

Искажение цветов во flash

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

Выход из положения - наложил Tint 1% белого. Всё стало вполне прилично.

пятница, сентября 14, 2007

Фокус на flash клипе

Проблема:
Flash клип встроен в HTML страницу, кроме него на странице также есть
текст, формы и другая ерунда.
Можно ли в Flash клипе узнать что фокус установлен на него и что он
будет реагировать на ввод с клавиатуры? Если же фокуса нет то показать
сообщение вроде "Click Me" чтобы кликнув мышкой по клипу установить на
него фокус.

Nox Noctis:
"Проблема решается только обязательным запросом "Click Me".
я не видел, чтобы кто-то делал по-другому....
не так давно сам задавался этим вопросом, и в результате всё равно
сделал предварительный запос "клик ми".
а по поводу узнавания, над флэшкой ли курсор (что не связано с
клавиатурой вобщем-то :) ) таким способом придется по таймеру дергать
ExternalInterface, а это уже не фонтан. даже если предположить, что
можно достоверно узнать, над флэшкой ли курсор."

Вопрос пока открыт