Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/actionscript-3/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Actionscript 3 错误#2077:无法使用指定的输入参数执行此筛选操作_Actionscript 3_Flash_Bitmapdata - Fatal编程技术网

Actionscript 3 错误#2077:无法使用指定的输入参数执行此筛选操作

Actionscript 3 错误#2077:无法使用指定的输入参数执行此筛选操作,actionscript-3,flash,bitmapdata,Actionscript 3,Flash,Bitmapdata,我试图通过将位图过滤器(特别是内部DropShadowFilter)应用于位图数据。applyFilter 我以前从未看到过这条消息,谷歌也没有立即回答这个问题,我看到有人对为什么它应用于JPEG而不是PNG图像感到困惑。所以希望这个问题能帮助其他人。我将在下面介绍我的简单解决方案。通过阅读,问题很明显。我尝试对没有透明度的位图数据应用DropShadowFilter(又名,没有alpha通道,每像素仅24位)。文档说明哪些过滤器需要透明度(为了方便起见,在此处复制): 每种类型的过滤器都有一定

我试图通过
位图过滤器
(特别是内部
DropShadowFilter
)应用于
位图数据
。applyFilter

我以前从未看到过这条消息,谷歌也没有立即回答这个问题,我看到有人对为什么它应用于JPEG而不是PNG图像感到困惑。所以希望这个问题能帮助其他人。我将在下面介绍我的简单解决方案。

通过阅读,问题很明显。我尝试对没有透明度的位图数据应用DropShadowFilter(又名,没有alpha通道,每像素仅24位)。文档说明哪些过滤器需要透明度(为了方便起见,在此处复制):

每种类型的过滤器都有一定的要求,如下所示:

  • 模糊过滤器-此过滤器可以使用不透明或透明的源图像和目标图像。如果图像的格式不匹配,则在过滤过程中制作的源图像副本与目标图像的格式匹配

  • BevelFilter、DropShadowFilter、GlowFilter、ChromeFilter这些过滤器的目标图像必须是透明图像。调用DropShadowFilter或GlowFilter将创建包含DropShadow或glow的alpha通道数据的图像。它不会在目标图像上创建阴影。如果将这些过滤器中的任何一个用于不透明的目标图像,则会引发异常

  • 卷积过滤器-此过滤器可以使用不透明或透明的源图像和目标图像

  • ColorMatrixFilter-此过滤器可以使用不透明或透明的源图像和目标图像

  • DisplacementMapFilter-此过滤器可以使用不透明或透明的源图像和目标图像,但源图像和目标图像格式必须相同

创建具有透明度的
BitmapData
很容易-这是构造函数的第三个参数:

Error #2077: This filter operation cannot be performed with the specified input parameters.
  at flash.display::BitmapData/applyFilter()
请注意,创建透明位图数据时,必须为默认颜色指定32位整数(第4个参数)。如果只指定0xffffff(24位白色),则会得到一个空白图像,因为alpha值(最高8位)为0

// args are: width, height, is_transparent, default_color
var bd:BitmapData = new BitmapData(1024, 768, true, 0xff000000);