2014-10-03 84 views
1

我正在写一个JSFL脚本来为Flash动画的每个主要部分导出一组png文件。为了做到这一点,我需要访问Flash文件Main.as类中的函数和变量。 JSFL的文档在网络上非常稀少,我不知道这是否可能。以下是我有:是否可以通过JSFL访问as3函数和变量?

var docs = fl.documents; 

for(var i = 0; i < docs.length; i++) 
{ 
    //loop through everything and turn off compression for max quality 
    var libItems = docs[i].library.items; 
    for (j = 0; j < libItems.length; j++){ 
     if(libItems[j].itemType == "bitmap"){ 
     libItems[j].allowSmoothing = true; 
     libItems[j].compressionType = "lossless"; 
     } 
    } 
    //the variable adStages is an array of functions in the as3 class 
    //this way of trying to access the array doesn't work 
    for(k = 0; k<docs[i].adStages.length; k++){ 
     //here I need to run function adStages[k] to move the animation on 
     //to the next frame to capture 
     docs[i].exportPNG("file:///Users/Graeme/Desktop/"+ docs[i].name + k,true, true); 
    } 

} 

我知道我可以通过扩展Main.as文件并使用的as3corelib包括PNGEncoder导出的文件做一个更笨重的方式,但我觉得如果这样的作品可能是更优雅而且我不必提示每个框架的文件放置位置。

+0

那里曾经是一个动作属性,你可以使用它编写或读取动作作为一个框架中的字符串,但这已被删除在最新版本。尽管如此,这还不够接近你想要做的wjat,而这通过jsfl是不可能的。 – BotMaster 2014-10-03 15:50:04

+0

我注意到与JSFL有关的ExternalInterface上有很多线程。我接受它我不能使用ExternalInterface在SWF中调用函数我正在测试增加当前部分并在完成时返回false? – 2014-10-04 10:11:07

+1

有JSFL功能专门用于下一帧。 Flash CC还具有用于自动将现有基于帧的动画导出为精灵的代码。你能对你想要的更具体吗?在你的问题中,我没有看到任何说你需要访问这些功能的东西(即使你能掌握它们也不能运行)。 – 2014-10-08 00:01:04

回答

0

您可以将SWF文件嵌入到custom Flash IDE panel中,然后通过外部接口进行通信或通过MMExecute()方法直接从AS3调用JSFL代码。如果工厂与JSFL进行大量工作,那么请考虑阅读Keith Peter's book Extending FlashMX 2004。这本书很古老,但仍然非常好,并没有过时。

相关问题