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.
Subscribe to the RSS feed and have all new posts delivered straight to you.