2013-02-19 2 views
1

Для проекта флеш-игры у меня есть swf-анимационные клипы, созданные с помощью 3D-рендеринга (например, Maya Vector Renderer). Теперь мне нужно изолировать части клипов (тело персонажа, доспехи, меч и т. Д.) В отдельных клипах с несколькими кадрами. Но мне нужно, чтобы эти клипы были замаскированы телом персонажа (например, когда меч качается позади тела, он должен быть обрезан, поэтому я могу держать клип анимации меча перед клипом тела, даже когда меч падает позади тела ...)Как отредактировать формы анимационного мувиклипа swf?

Для этого я использую какую-то традиционную технику sfx: я рисую все предметы (например, меч) на простом зеленом фоне, а также с телом персонажа, имеющим тот же зеленый шейдер. Затем мне просто нужно стереть зеленую фигуру на всех кадрах клипов во Flash. Проблема в том, что у меня будет много клипов, каждый из которых имеет много кадров ... Есть ли способ сделать это для редактирования с помощью flash или любого программного обеспечения? Или кто-нибудь может придумать более удобный способ сделать это?

+0

Можно ли сделать кадр каждого объекта прозрачным фоном, сохраненным как pngs? – mitim

+0

Да, почему бы и нет, так как я собираюсь использовать растровые листы спрайтов –

ответ

0

Если у вас есть прозрачный фон png, попробуйте привести один из них во флэш и растровое изображение, отслеживающее его. Это должно оставить вас только с вашим объектом, сохранив шаг «стирание зеленых фигур» на каждом кадре.

Если это приемлемо/что вы хотите, то то, что вы можете сделать, это импортировать целую тонну кадров на временную шкалу в качестве мувиклипа, а затем использовать сценарий jsfl для растрового отображения всех из них сразу.

Вот сценарий jsfl, который я написал, который может трассировать растровые изображения, распределенные по многим кадрам (там, где есть 1 растровое изображение на кадр). Скопируйте содержимое и сохраните его как файл jsfl.

Чтобы запустить его, импортируйте кучу pngs в шкалу времени и выберите все фреймы, в которых они находятся. Затем перейдите в «Команды» -> «Выполнить команду», чтобы трассировать каждый битмап в выбранных кадрах.

var timeline = fl.getDocumentDOM().getTimeline(); 

// get selected frame numbers 
var selectedFrameObject = timeline.getSelectedFrames(); 

var start = selectedFrameObject[1]; 
var end = selectedFrameObject[2]; 

fl.trace("Selected frames: "+ start +"-"+ end); 

for(var counter = start; counter < end; counter++){ 
    timeline.currentFrame = counter; 
    document.selectAll(); 
    // you can play with these values to change the tracing parameters 
    document.traceBitmap(100, 8, "normal", "many corners"); 
    document.selectNone(); 
} 
+0

Да! Эта вещь jsfl была именно тем, что я искал ... я внес небольшие изменения в ваш скрипт и сумел сделать то, что хотел. Большое спасибо! –