Flash CS4, JSFL: изменение настроек экспортаPNG - PullRequest
0 голосов
/ 31 октября 2010

Мне нужно экспортировать FLA как последовательность изображений PNG, используя JSFL.

Первая проблема, с которой я столкнулся, заключается в том, что я не могу вызвать document.importPublishProfileString для изменения текущего профиля публикации, он всегда дает сбой (возвращает 0). Теперь я создаю отдельный профиль публикации, удаляя его, если он уже существует. Я не знаю, почему это не упоминается в документации.

Вторая проблема более серьезна. Публикация профиля игнорируется, когда я вызываю document.exportPNG (). Вместо этого используются ширина и высота, которые я в последний раз использовал в диалоговом окне «Файл> Экспорт> Экспорт фильма». Профиль создан с правильными настройками, я могу видеть их с помощью пользовательского интерфейса. Теперь даже публикация через пользовательский интерфейс («Файл»> «Опубликовать») использует настройки из экспорта фильмов.

fl.outputPanel.clear();

var doc = fl.getDocumentDOM();
var profile = new XML(doc.exportPublishProfileString());

profile.@name = 'Game';
profile.PublishFormatProperties.png = 1;
profile.PublishFormatProperties.flash = 0;
profile.PublishFormatProperties.generator = 0;
profile.PublishFormatProperties.projectorWin = 0;
profile.PublishFormatProperties.projectorMac = 0;
profile.PublishFormatProperties.html = 0;
profile.PublishFormatProperties.gif = 0;
profile.PublishFormatProperties.jpeg = 0;
profile.PublishFormatProperties.qt = 0;
profile.PublishFormatProperties.rnwk = 0;

profile.PublishPNGProperties.@enabled = 'true';
profile.PublishPNGProperties.Width = 500;
profile.PublishPNGProperties.Height = 500;
profile.PublishPNGProperties.Interlace = 0;
profile.PublishPNGProperties.Transparent = 1;
profile.PublishPNGProperties.Smooth = 1;
profile.PublishPNGProperties.DitherSolids = 0;
profile.PublishPNGProperties.RemoveGradients = 0;
profile.PublishPNGProperties.MatchMovieDim = 0;
profile.PublishPNGProperties.DitherOption = 'None';
profile.PublishPNGProperties.FilterOption = 'None';
profile.PublishPNGProperties.MatchMovieDim = 0;
profile.PublishPNGProperties.BitDepth = '24-bit with Alpha';
fl.trace(profile);

if (doc.publishProfiles.indexOf('Game') != -1) {
    doc.currentPublishProfile = 'Game';
    doc.deletePublishProfile();
}
doc.addNewPublishProfile('Game');

fl.trace(doc.importPublishProfileString(profile));

var exportFileName = doc.pathURI.replace(/%20/g, " ").replace(doc.name, "1/" + doc.name.replace(/\.fla$/, "") + ".png"); // temporary hack
fl.trace(exportFileName);

doc.exportPNG(exportFileName, true, false);

Можно ли как-то настроить параметры exportPNG в профиле?

Ответы [ 2 ]

0 голосов
/ 19 марта 2012

Я просто изменил ваш скрипт, чтобы сначала отключить MatchMovieDim, прежде чем пытаться установить ширину и высоту, и он работает для меня. Я думаю, что настройки ширины и высоты будут отклонены, пока MatchMovieDim не будет выключен.

profile.PublishPNGProperties.MatchMovieDim = 0;
profile.PublishPNGProperties.Width = 500;
profile.PublishPNGProperties.Height = 500;
0 голосов
/ 26 февраля 2011

Я думаю, что параметры публикации PNG на самом деле относятся к изображениям внутри опубликованного SWF, которые не сжаты в формате JPG.

В качестве альтернативы, если вы запускаете сценарий с панели SWF, вы можете использовать параметр публикации, чтобы экспортировать SWF, извлечь его, загрузить в панель, а затем сгенерировать PNG каждого кадра, используя что-то вроде AS3CoreLib . Поскольку вы находитесь в CS4, Flash Player 10 должен позволять сохранять на локальный диск.

...