【问题标题】:as3 PNGEncoder erroras3 PNG编码器错误
【发布时间】:2014-07-20 06:11:29
【问题描述】:

我正在尝试使用 PNG 编码器保存我的图形,但出现两个错误。

Scene 1, Layer 'canvas', Frame 2, Line 42, Column 12    1172: Definition PNGEncoder could not be found.

Scene 1, Layer 'canvas', Frame 2, Line 965, Column 24   1120: Access of undefined property PNGEncoder.

这是所有循环保存的代码:

     import PNGEncoder;                          [Recieves the first error]


function export():void
{
  var bmd:BitmapData = new BitmapData(board.width, board.height);

bmd.draw(board);

var ba:ByteArray = PNGEncoder.encode(bmd);   [Recieves the second error]

var file:FileReference = new FileReference();  

file.save(ba, "MyDrawing.png"); 
}


saveButton.addEventListener(MouseEvent.CLICK,save) 


 function save(e:MouseEvent):void
{
    export(); 
  }

我从教程中得到了这段代码,所以我不能确定它的格式是否正确。 tut 说 PNGEncoder 是一个导入,但根据 flash cs3 它不是。有人可以帮我解决这个问题吗?我标记的部分给我一个错误,谢谢。

【问题讨论】:

    标签: actionscript-3 save


    【解决方案1】:

    您需要下载PNG Encoder 并设置 Flash 以知道在哪里可以找到新库(以下过程可用于您将来需要使用的任何其他外部下载的 SWC)

    1) 创建一个名为 Flash_Addons 的新文件夹 (路径将是 C:\Flash_Addons\ 这只是为了让您现在开始,稍后将设置更改为首选文件夹名称/位置)

    2) 下载AS3 CoreLib(底部/右侧的“下载 ZIP”选项

    3) Zip 中有一个文件夹(我认为它称为“as3corelib-.93”),将其复制到您的 Flash_Addons 文件夹,因此它现在是一个子文件夹。

    4) 现在告诉 Flash 在哪里可以找到它。在你的 CS 中进入 Edit-->Preferences (CTRL+U快捷方式)并单击 类别 列表中的“ActionScript”,然后在显示时单击 ActionScript 3.0 设置
    现在您将看到三个框(源路径/库路径/外部路径)。

    (对于以下这些,请单击“+”添加新条目,然后键入路径或单击文件夹图标进行浏览)
    源路径:您希望它添加.. C:\Flash_Addons\
    库路径: 您希望它添加.. C:\Flash_Addons\as3corelib-.93\lib
    (注意:“lib”文件夹包含实际的 as3corelib.SWC 文件,这就是我们为其添加直接路径的原因。当您想要添加任何新的 SWC 库时,只需将路径添加到条目列表(示例):
    C:\Flash_Addons\as3corelib-.93\lib
    C:\Flash_Addons\Useful_Library_Folder_of_SWC_file\
    等等……等等……

    现在您已准备好导出 PNG..

    import com.adobe.images.PNGEncoder; //fixes the errors
    
    saveButton.addEventListener(MouseEvent.CLICK, save)
    
    function save(e:MouseEvent):void
    {  export(); }
    
    function export():void
    {
      var bmd:BitmapData = new BitmapData(board.width, board.height);
    
      bmd.draw(board);
    
      var ba:ByteArray = PNGEncoder.encode(bmd); 
      var file:FileReference = new FileReference();  
    
      file.save(ba, "MyDrawing.png"); 
    
    }
    

    【讨论】:

    • 啊,非常感谢!效果很好,得到了我想要的确切结果。不知道为什么我看过的其他地方没有提到这一点,无论如何,再次感谢!
    猜你喜欢
    • 2020-06-09
    • 1970-01-01
    • 2015-10-25
    • 2011-08-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-30
    • 2018-04-12
    相关资源
    最近更新 更多