2010-10-30 36 views
0

J'ai besoin d'exporter FLA en tant que séquence d'images PNG en utilisant JSFL.Flash CS4, JSFL: modification des paramètres pour l'exportationPNG

Le premier problème que j'ai rencontré est que je ne peux pas appeler document.importPublishProfileString pour changer le profil de publication actuel, il échoue toujours (renvoie 0). Maintenant, je crée un profil de publication séparé, en le supprimant s'il existe déjà. Je ne sais pas pourquoi cela n'est pas mentionné dans la documentation.

Le deuxième problème est plus grave. Le profil de publication est ignoré lorsque j'appelle document.exportPNG(). La largeur et la hauteur que j'ai utilisées pour la dernière fois dans la boîte de dialogue "Fichier> Exporter> Exporter un film" sont utilisées à la place. Le profil est créé avec les paramètres corrects, je peux les voir en utilisant l'interface utilisateur. Maintenant, même la publication via l'interface utilisateur (Fichier> Publier) utilise les paramètres de l'exportation de film.

fl.outputPanel.clear(); 

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

[email protected] = '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; 

[email protected] = '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); 

Existe-t-il un moyen de faire en sorte que les paramètres de respect de l'exportPNG soient pris en compte dans le profil?

Répondre

0

Je pense que les paramètres de publication PNG se réfèrent en réalité aux images contenues dans le fichier SWF publié qui ne sont pas compressées au format JPG. Si vous lancez le script à partir d'un panneau SWF, vous pouvez également utiliser un paramètre de publication pour exporter un fichier SWF, le récupérer, le charger dans votre panneau, puis générer un fichier PNG de chaque image à l'aide de AS3CoreLib. Puisque vous êtes en CS4, Flash Player 10 devrait vous permettre d'enregistrer sur le disque local.

0

Je viens de changer votre script pour désactiver le MatchMovieDim avant d'essayer de définir la largeur et la hauteur et cela fonctionne pour moi. Je pense que les paramètres Largeur et Hauteur sont rejetés jusqu'à ce que MatchMovieDim soit désactivé.

profile.PublishPNGProperties.MatchMovieDim = 0; 
profile.PublishPNGProperties.Width = 500; 
profile.PublishPNGProperties.Height = 500;