2014-10-03 109 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。這本書很古老,但仍然非常好,並沒有過時。

相關問題