Actionscript 3 带alpha的AS3位图数据复制像素

Actionscript 3 带alpha的AS3位图数据复制像素,actionscript-3,rendering,bitmapdata,Actionscript 3,Rendering,Bitmapdata,我试图将位图的像素复制到BitmapData中,透明度为,比如说.5,但我在谷歌上或这里似乎找不到任何引用 我有我的标准复制像素代码 \u bitmapData.copyPixels(\u bitmaps.vault[BitmapNames.BITMAPNAME],SCREENRECT,\u drawPoint,null,null,true) 我可以看到我传递的第一个空值是一个标有alphaBitmapData:BitmapData的BitmapData,所以我假设它与此有关,但我无法计算出来

我试图将位图的像素复制到BitmapData中,透明度为,比如说.5,但我在谷歌上或这里似乎找不到任何引用

我有我的标准复制像素代码

\u bitmapData.copyPixels(\u bitmaps.vault[BitmapNames.BITMAPNAME],SCREENRECT,\u drawPoint,null,null,true)

我可以看到我传递的第一个空值是一个标有
alphaBitmapData:BitmapData
的BitmapData,所以我假设它与此有关,但我无法计算出来

任何帮助都将不胜感激,干杯

接下来,您将找到有关变量的一些解释

简而言之,当您将最后一个参数(mergeAlpha:Boolean)设置为true时,该函数将在复制像素时考虑第四个参数(alphaBitmap:BitmapData),有效地使用alphaBitmap的alpha来合并复制的像素。因此,您应该将用于第一个参数的位图传递给第四个参数,相应地设置第五个参数(alphaPoint:Point),并将最后一个参数设置为true。

下面您将找到有关变量的一些解释


简而言之,当您将最后一个参数(mergeAlpha:Boolean)设置为true时,该函数将在复制像素时考虑第四个参数(alphaBitmap:BitmapData),有效地使用alphaBitmap的alpha来合并复制的像素。因此,您应该将用于第一个参数的相同位图传递给第四个参数,相应地设置第五个参数(alphaPoint:Point),并将最后一个参数设置为true。

我接受威尔·克鲁的答案,因为下面的答案(尽管仅基于理论)是用于将该方法置于疯狂背后的代码

var alphaBitmap:BitmapData=新的BitmapData(宽度、高度、真值、到argb(0x000000,(.5*255))

\u bitmapData.copyPixels(\u bitmaps.vault[BitmapNames.BITMAP]、\u drawRect、\u drawPoint、alphaBitmap、null、true)


在这里找到的toARGB函数

我接受了Will Kru的答案,因为下面的答案(尽管只是基于理论)是用于将该方法隐藏在疯狂背后的代码

var alphaBitmap:BitmapData=新的BitmapData(宽度、高度、真值、到argb(0x000000,(.5*255))

\u bitmapData.copyPixels(\u bitmaps.vault[BitmapNames.BITMAP]、\u drawRect、\u drawPoint、alphaBitmap、null、true)


toARGB函数位于此处

,因此您只能在创建时定义位图的alpha。我想在第1帧将位图复制到另一个透明度为.5的BitmapData,然后在第2帧,当我重新绘制整个位图时,我想在.4的BitmapData上绘制它,然后在.3。。。。。(作为一个例子)但从我从你发布的文章中所了解到的情况来看,你不能这样做?你只需要将原始位图保存在内存中,并使用这些位图在每一帧使用所需的alpha值重新创建你想要的位图。我存储在内存中,我不知道如何将理论应用到代码中。我现在已经解决了!类似这样的测试工作
var测试:BitmapData=new-BitmapData(_-drawRect.width,_-drawRect.height,true,toARGB(0x000000,(.5*255));_bitmapData.copyPixels(_bitmaps.vault[BitmapNames.LEAPJUMPLINE],_drawRect,_drawPoint,test,null,true);}argb的私有函数(rgb:uint,newAlpha:uint):uint{var argb:uint=0;argb=(rgb);argb+=(新建alpha因此您只能在创建时定义位图的alpha。我想在第1帧将位图复制到另一个位图数据,透明度为.5,然后在第2帧上,当我重新绘制整个位图时,我想在.4,然后是.3…的位图数据上绘制它(作为示例)但是从你发布的文章中我无法理解的是,你不能这样做?你只需要将原始位图保存在内存中,然后使用这些位图在每一帧使用所需的alpha值重新创建你想要的位图。我正在内存中存储,我不明白如何将理论应用到代码中。我现在已经解决了!类似这样的东西rked
var test:BitmapData=new BitmapData(_drawRect.width,_drawRect.height,true,toARGB(0x000000,(.5*255));_BitmapData.copyPixels(_bitmaps.vault[BitmapNames.LEAPJUMPLINE],_drawRect,_drawPoint,test,null,true);}私有函数toARGB(rgb:uint,newAlpha:uint):uint{-var argb:uint=0;argb=(rgb+)=(newAlphaYes这也可以。Copypixels将从您传递到第一个参数的位图中获取颜色值,从您传递到第四个参数的位图中获取alpha值。在我的回答中,我假设您的源位图将包含alpha值,以便您可以将其用于两个参数。是的,这也可以。Copypixels将获取将位图中的颜色值传递给第一个参数,将位图中的alpha值传递给第四个参数。在我的回答中,我假设sourcebitmap将包含alpha值,因此您可以将其用于两个参数。