BitamapData.draw()のキャプチャ範囲を自動的に判定してキャプチャするクラス

Bitmap.draw()するとき、基準点が左上だと問題ないのですが、
マイナスの位置にDisplayObjectがあったりすると
領域を取得するときに面倒くさくなりがちです。
そこでキャプチャ領域を自動的に判定してキャプチャするクラスを作りました。

ASファイル


DrawAuto.drawBmp(displayObject : DisplayObject)

でBitmapを返します。


DrawAuto.drawBmd(displayObject : DisplayObject)

でBitmapDataを返します。


DrawAuto.getRectAuto(displayObject : DisplayObject)

でパラメータDisplayObjectのローカルRectangleを返します。

仕組みは、ダミーのスプライトを作りパラメータDisplayObjectをaddChild()してgetRect()で領域を取得しています。パラメータDisplayObjectが既に他の場所にaddChild()されている場合は、強制的にremoveされてしまうので、先に親DisplayObjectContainerとインデックスを取得しておき、領域取得後、addChildし直すのですが、そのあたりで不具合が、まだ使ったことがないのでありそうな気がします。

「ActionScript 3.0 イメージエフェクト」という本で紹介されているaether-effectsというライブラリのScreenCaptureというクラスを基に作りました。

   15 notes

  1. sighingdog reblogged this from hetmek
  2. n0wri-blog reblogged this from hetmek
  3. hetmek posted this