Изменение размера, перемещение, экспорт координат объектов во flash

Как разместить объекты во флэш-памяти, переместить их, изменить их размер и т. д., а затем экспортировать координаты/поворот в текстовый файл или что-то в этом роде?


person Leticia Meyer    schedule 19.01.2011    source источник


Ответы (1)


Вы имеете в виду во время выполнения или во время автора (в среде IDE)?

Во время выполнения вы просто перебираете интересующие вас клипы и сохраняете свойства в text/xml:

var layout = <layout />;//create the root node for our xml
var elementsNum = numChildren;//store this for counting

for(var i = 0 ; i < elementsNum ; i++){
    var clip = getChildAt(i);
    layout.appendChild(<element />);//add an element node
    layout.element[i].@name = clip.name;//setup attributes
    layout.element[i].@x = clip.x;
    layout.element[i].@y = clip.y;
    layout.element[i].@rotation = clip.rotation;
    layout.element[i].@scaleX = clip.scaleX;
    layout.element[i].@scaleY = clip.scaleY;
}

flash.system.System.setClipboard(layout);
trace('layout copied to clipboard');

Это создаст xml, в котором каждый клип в текущем MovieClip является узлом, и некоторые свойства будут сохранены. Затем xml копируется в буфер обмена.

Вы можете сделать что-то подобное во время работы автора с чем-то простым, например, с выделением:

var doc = fl.getDocumentDOM();//get the current document ref.
var selection = doc.selection;//get the selection
var layout = <layout />;//create the root node for our xml
var elementsNum = selection.length;//store this for counting

for(var i = 0 ; i < elementsNum ; i++){
    layout.appendChild(<element />);//add an element node
    layout.element[i].@name = selection[i].name;//setup attributes
    layout.element[i].@x = selection[i].x;
    layout.element[i].@y = selection[i].y;
    layout.element[i].@rotation = selection[i].rotation;
    layout.element[i].@scaleX = selection[i].scaleX;
    layout.element[i].@scaleY = selection[i].scaleY;
}

var url = fl.browseForFileURL('save','Save Layout');//prompt for location
if(url) fl.trace(FLfile.write(url,layout));//save

Если вы сохраните его как файл .jsfl в папке Commands Flash, он должен появиться в меню «Команды» в среде IDE, в противном случае вы сможете просто запустить его. Не то, чтобы он хранил свойство имени, поэтому выбор должен содержать MovieClip (или элементы с именем). Затем отображается диалоговое окно сохранения, и XML сохраняется в текстовый файл.

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

Бессовестный плагин: вам может пригодиться эта тонкая презентация JSFL.

ХТН

person George Profenza    schedule 20.01.2011
comment
@Leticia Я не видел тега Flash Builder/flex/вопроса. В flash builder у вас нет той же среды разработки, что и в flash professional, поэтому подход JSFL не будет работать. Вам нужно будет использовать actionscript, чтобы зациклить содержимое интересующего вас DisplayObjectContainer, чтобы получить данные преобразования (положение, вращение, масштаб). Чего именно вы пытаетесь достичь? - person George Profenza; 20.01.2011