Posts Tagged ‘swf’
InDesign, особенности экспорта во flash
Делаю интерактивную презентацию. Верстку экспортирую прямо в fla файл из InDesign. В принципе все проходит нормально за исключением одного неприятного глюка: при экспорте текстовые строки бьются на части и если в текстовом боксе нет ничего кроме пробелов… то вас ждут неприятности.
Когда я в action script пытался получить размеры мувиклипа (ширину или высоту) содержащего текстовые блоки только с одним или двумя пробелами, то получал на выходе невероятное число типа 25 000 000 пикселей. Я довольно долго вычислял, что является причиной этого глюка, но в конце концов понял, что виноваты эти маленькие, коварные текстовые блочки с пробелами. как только эти блоки убираешь, то все нормализуется.
Учитывая объем этой презентации - 120 страниц, пришлось написать скрипт, который убирает эти пробелы автоматом, весьма удобное мероприятие вот примерно такой:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 | var flash_doc = fl.getDocumentDOM(); var flash_tl = flash_doc.getTimeline(); var lib = fl.getDocumentDOM().library; var itemNo = 1; var itemName = 'SpreadsEng/Spread_0' + itemNo; var myArray = new Array(); while (lib.itemExists(itemName)) { var myArray = new Array(); lib.editItem(itemName); curr_tl = flash_doc.getTimeline(); flash_doc.selectAll(); var theSelectionArray = fl.getDocumentDOM().selection; for(var i=0;i<theSelectionArray.length;i++){ if (theSelectionArray[i].elementType == "text"){ var str = theSelectionArray[i].getTextString(); if (str.length == 2) { //fl.trace(itemName+ " element space >" + str.charCodeAt(0) + "< string: " + str); //поиск двух пробелов if (str == " ") { fl.trace("two spaces!!!"); myArray.push(theSelectionArray[i]); } //поиск одного пробела 32, 9 /*if (str.charCodeAt(0) == 32){ fl.trace(itemName+ " element space >" + str.charCodeAt(0) + "< string: " + str); myArray.push(theSelectionArray[i]); } */ } } } flash_doc.selectNone(); flash_doc.selection = myArray; if (myArray.length >0) { flash_doc.deleteSelection(); } itemNo++; if (itemNo <10){ itemName = 'SpreadsEng/Spread_0' + itemNo; } else { itemName = 'SpreadsEng/Spread_' + itemNo; } } |
Скрипт надо сохранить в папке
C:\Users\user\AppData\Local\Adobe\Flash CS5\en_US\Configuration\Commands
и он появится в меню Commands во Flash IDE.
Создание скринсейверов для Windows из swf
Мне уже несколько раз приходилось сталкиваться с задачей создания скринсейвера из flash. Раньше я пользовался програмкой Flash screensaver master, все бы ничего, но во-первых она не бесплатная, во-вторых спустя год использования все антивирусы как один начали выть, что в скринсейверах есть spyware, а после перезда на windows 7 я и вовсе ее не смог поставить, т.к. антивирус лихо удалил основной экзешник, опять-таки заподозрив в нем вирус.
Порыскав в сети я обнаружил весьма неплохую альтернативу - Instant Storm.
- Во-первых, это совершенно бесплатная программа (авторы предлагают сделать им добровольный взнос если понравиться).
- Во-вторых она гораздо более функциональна чем вышеназванный предшественник. Главное, что скачивать для использования нужно обязательно только версию 2.0Rc (release candidate), т.к. версия предлагаемая в качестве основной, производит кривые скринсейверы (где-то они работают, а где-то нет).
Итак, чем же мне так понравился Instant Storm?
1. У него есть возможность создавать собственные панели настройки для скринсейвера. В качестве панели настроек можно подсунуть собственный swf. Я пока не исследовал эту часть.
2. Мне очень понравился целиком и полностью настраиваемый инсталлятор, можно задавать свои тексты в диалоге настроек, настраиваются практически любые диалоговые окна, то есть практически все мыслимые параметры можно кастомизировать.
3. 2-я версия поддерживает Flash CS4 (Flash Player 10).
4. Есть внятная онлайновая инструкция и живой форум пользователей, правда на английском.
Я не буду вдаваться в подробности создания скринсейвера, благо процесс этот совершенно элементарный, особенно для людей находящихся в теме.
Несколько слов о том каким должен быть swf для скринсейвера. Слов даже не несколько, оно одно - “любым”. Я скармливал как обыкновенный swf сделанный на таймлайне, так и ролик полностью написанный на ActionScript, да еще и качающий фотографии из папки на жестком диске для своей работы - работает все отлично.
Вобщем к чему все это я? Да вот: очень советую Instant Storm, хорошая штука, денег я парням не платил еще, так хотя бы рекламу им сделаю.