10
Авг
0

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.

Enjoyed reading this post?
Subscribe to the RSS feed and have all new posts delivered straight to you.

Comments are closed.

Celadon theme by the Themes Boutique