【问题标题】:AS3:Best practice for getting image from Loader()AS3:从 Loader() 获取图像的最佳实践
【发布时间】:2009-03-13 19:06:31
【问题描述】:

使用 Loader 加载图像时,将图像添加到显示列表的首选方式是什么?在像 new Bitmap( Bitmap(LoaderInfo(e.target).content).bitmapData ) 这样的 Event.COMPLETE 处理程序中抓取数据,还是添加 Loader 实例本身?

【问题讨论】:

    标签: apache-flex flash actionscript-3


    【解决方案1】:

    如果您只想显示 Loader 的内容,请随意将 Loader 添加到显示列表中,而不是提取其内容。当您需要重新设置 Loader 的内容时,这种情况并不常见。

    此外,值得注意的是,加载程序的内容并不总是可访问的。例如,Flash Player 对从其他域加载的内容设置了安全限制。强制执行这些更强大的安全规则后,如果您尝试访问加载程序的内容,Flash Player 会在运行时引发安全错误。

    【讨论】:

    • 所以如果我循环播放 25 张图片,我会在显示中添加 25 个加载器?
    • 是的。作为参考点。 Flex 的 SWFLoader/Image 控件在内部使用 Loader,它们将 Loader 添加到显示列表中,而不是先提取 Loader 的内容。
    【解决方案2】:

    最好等待Loader 完成并在结果处理程序中设置Image 数据。

    【讨论】:

    • 好的,为什么?加载器是否也需要添加到显示列表中?好奇,来自 adobe 的示例确实如此。
    • 这样你可以处理失败,不要在加载之前开始处理图像等等......
    【解决方案3】:

    您不能将子级添加到 Loader 类,因为.....引用 livedocs“Loader 类重写了它继承的以下方法,因为 Loader 对象只能有一个子显示对象”

    【讨论】:

      【解决方案4】:

      位图在调整大小时支持图像平滑,有时这很方便。 另一方面,Loader 是 DisplayObjectContainer 并允许在其中添加其他子项。

      【讨论】:

        【解决方案5】:

        Loader 很方便,因为它使数据处理非常整洁(加载/卸载)。就我个人而言,我需要有充分的理由从加载器对象中提取数据。

        对于图像,一个很好的理由是无论您对数据做什么都需要 BitmapData 类。

        如果您只是显示图像,那么您不一定需要 BitmapData 类。在这种情况下,使用 BitmapData 是不需要的代码!

        【讨论】:

          猜你喜欢
          • 2012-11-11
          • 2012-01-05
          • 2010-09-06
          • 2011-12-13
          • 2014-05-23
          • 1970-01-01
          • 2010-10-18
          • 2023-03-16
          • 1970-01-01
          相关资源
          最近更新 更多