May 01

ActionScript 3可以显示一幅通过代码计算得出RGB值而动态生成的bigmap图像。利用这种特性,演绎3D元素,制作影像和图片以及其他的效果都显得比较容易。为了在显示器屏幕中描画像素,就需要创建一个Bitmap和BitmapData类的实例,BitmapData表示一组像素,而Bitmap则是用来描画这些像素的一个DisplayObject对象。为了动态的描画出逼真的bitmap图像,就需要在各个框架中写入所有的像素。而实现这一点,至少有两种方法:一种是通过给每一个像素调用一次setPixel,还有一种是创建一个适当大小的ByteArray,然后将其传给BitmapData.setPixels.所以,如果你希望你的代码执行的足够快,那应该选择哪一种呢?

下面的代码应该是最快的了:


  1. outputBitmapData.lock();
  2. for(y = 0; y < STAGE_HEIGHT; ++y)
  3. {
  4.   for(x = 0; x < STAGE_WIDTH; ++x)
  5.   {
  6.     r = (t*100 + 255 * x / STAGE_WIDTH)%255;
  7.     g = 180;
  8.     b = 180;
  9.  
  10.     outputBitmapData.setPixel(x, y, (r<<16) + (g<<8) + b);
  11.   }
  12. }
  13. outputBitmapData.unlock();

你是否还有更好的提案呢?

written by Minidxer  |  tags: , , , , ,

Related Post

One Response to “ActionScript 3中描画像素的最快的方法”

  1. efish Says:

    在AS3里操纵单个像素应该没有比setPixel更快的了。批量处理像素setPixels也是最快的。虽然copyPixels更快,但是不够灵活。

Leave a Reply