我需要在位图上绘制,而不是在它的透明像素上绘制?
图片示例如下:
我写了下面的代码:
import flash.display.Bitmap;
import flash.events.Event;
import flash.geom.Matrix;
var s:S = new S();
var m_bitmapData = new BitmapData(s.width, s.height, true, 0x00000000);
m_bitmapData.draw(s);
var hole=new Sprite();
var hole_matrix:Matrix
hole.graphics.
我想使用3个位图来创建一个最终的位图。首先是背景。第二张画在第一张的上面,用面罩的帮助。
图像被加载到/对象中。
示例:
(红色-绿色图像是面具,红色是可见部分)
back mask source result
那我该怎么做呢?在ActionScript-3中使用什么绘图功能?
谢谢你的帮助!
编辑:
(我的第一个工作方案,只适用于纯红色、绿色或蓝色)
var back: BitmapData = // load the back image
var mask: BitmapData = // load the mask image
var sourc
问题2:我在玩摄像机。
var bitmapData:BitmapData = new BitmapData();
bitmapData.draw(firstitem);
if (CameraRoll.supportsAddBitmapData)
{
var cameraroll:CameraRoll = new CameraRoll();
cameraroll.addBitmapData(bitmapData);
}
<s:Image id="firstitem"/>
想象一下我有另一个
<s:Image id="secon
我有一个这样的代码:
var bitmapData:BitmapData = new BitmapData(width, height);
bitmapData.draw(this);
var ba:ByteArray = (new PNGEncoder()).encodeByteArray(bitmapData.getPixels(clipRect),width,height,true);
我想让生成的PNG中的白色变得透明。最好的方法是什么?
在这里,我附加代码,转换位图到字节数组,现在我必须重新生成位图,以显示在android图像视图。
在下面的代码中,mRawBitmapData是byte Araay。这里的代码是为转换后的图像创建字节数组,所以现在我必须从这个字节数组重新生成位图。
private void convertArgbToGrayscale(Bitmap bmpOriginal, int width, int height){
int pixel;
int k = 0;
int B=0,G=0,R=0;
try{
for(int x = 0; x < heigh
我在一个类中有这个函数,它创建我传入的任何DisplayObject的位图。正如您将看到的,每次创建新的位图时,我都会创建一个新的BitmapData对象和一个新的bitmap对象。
有没有办法调整这个函数,使我不再需要在每次运行函数时重新创建这两个对象?
private var bitmapData:BitmapData;
private var bm:Bitmap;
crop(someSprite.width, someSprite.height, someSprite);
private function crop(_width:Number, _height:Number, di
我想将包含透明区域的图片作为遮罩应用于显示对象。遮罩只显示遮罩有color.but的区域实际上,显示对象仍然显示整个area.so我将位图转换为矢量图像,这解决了这个问题,但转换方法太可怕了。
public static function createVectorImage(bd:BitmapData,colorKey:uint = 0):Shape{
if(bd==null){
return null;
}
var sh:Shape = new Shape();
var g:Graphics =
在我的类中,我创建了一个具有相应BitmapData对象的位图:
类成员
private var _bitmapData:BitmapData;
private var _bitmap:Bitmap;
private var _history:Array;
构造函数:
_history = new Array();
_bitmapData = new BitmapData(50, 50, true, 0x00FFFFFF);
_bitmap = new Bitmap(_bitmapData);
this.addChild(_bitmap);
在我的"modifyImage“函数中,我想
我需要多少图像来制作一个好的动画人物或像stickman这样的人?
例如,我创建了一个Person类,并在其中添加了一个事件侦听器onEnterFrame,因此每个stickman都有自己的动画
private function onEnterFrame(e:Event):void{
addChild(image[i])
i++;
//thus every times increasing the i++, and add a new image
}
例如,如果我的速度是24fps,图像变化得很快,但动画效果不够好,你能给我一个如何做的建议吗?
ps:如何添加和删除子镜像
有没有人在flashbuilder 4.5.1中成功地使用了这个编码器?我得到了这个错误?通常在加载第二张图片时。任何帮助都是非常感谢的。
RangeError: Error #1506: The specified range is invalid.
at cmodule.aircall::FSM_imalloc$/start()
at cmodule.aircall::FSM_pubrealloc/work()
at cmodule.aircall::CRunner/work()
at Function/<anonymous>()
at flash.utils::Ti
目前,我正在使用来自JPGEncoder核心库的AS3将位图编码成AS3
var enc:JPGEncoder = new JPGEncoder(90);
var jpg:ByteArray = enc.encode(bitmap);
由于位图相当大(3000 X 2000),编码需要很长时间(约20秒),导致应用程序在编码时似乎冻结。为了解决这个问题,我需要:
一个异步编码器,这样我可以在编码时不断更新屏幕(使用进度条或其他东西)。
一种简单快捷的替代编码器
是可能的,我该怎么做呢?
我试图使用和copyPixels方法获取阶段区域的BitmapData部分:
bmd = new BitmapData(stage.stageWidth, stage.stageHeight);
bmdRect = new BitmapData(320, 240);
rectangle = new Rectangle(360, 20, 320, 240);
bmdRect.copyPixels(bmd, rectangle, new Point());
bmd.draw(bmp);
bmp = new Bitmap(bmdRect);
var myEncoder:JPGEnc
我不知道是什么导致了这个错误。我肯定这很明显。(见下文评论)。
package src.main{
import src.tilespack.Tile;
public class Main{
public var tile:Tile;
public function Main{
var t:Tile = Tile.tiles[0]; //Error here
trace(Tile); //This will also cause an error
}
瓷砖:
package