定位bitmapdata

时间:2011-02-27 09:22:12

标签: actionscript-3 actionscript

我有以下代码:

public function Application()
        {
            loader = new Loader();
            loader.contentLoaderInfo.addEventListener(Event.COMPLETE, completeHandler);
            var urlRequest:URLRequest = new URLRequest("image/1.jpg");
            loader.load(urlRequest);
            addChild(loader);
        }
        private function completeHandler(e:Event):void{
            loader.content.width = 800;
            loader.content.scaleY = loader.content.scaleX;
            piece = Math.round(loader.height/10);
            drawBitmaps();
        }
        private function drawBitmaps():void{
             var bmdata:BitmapData = new BitmapData(loader.width, piece, true, 0x000000);
             bmdata.draw(loader);
             var bitmap:Bitmap = new Bitmap(bmdata);
                 addChild(bitmap);
                 loader.visible = false;
        }

结果是一个包含图像pice的位图。高度为80.它从图像的顶部开始。但是我怎么能告诉bitmapdata开始从80pixels开始绘制图像?所以它绘制了图像的中间部分?因为它总是从图像的顶部绘制。

2 个答案:

答案 0 :(得分:3)

您应该使用BitmapData :: draw clipRect参数。 这是一个例子:

package {
  import flash.geom.Rectangle;
  import flash.display.Bitmap;
  import flash.display.BitmapData;
  import flash.display.Graphics;
  import flash.display.Sprite;
  public class BitmapDataTest extends Sprite {
     public function BitmapDataTest() {
        var c:Sprite = new Sprite();
        var g:Graphics;
        g = c.graphics;
        g.beginFill(0xFF0000);
        g.drawCircle(30,30,30);
        g.endFill();
        addChild(c);
        c.x = 10;
        c.y = 10;
        var bmdata:BitmapData = new BitmapData(60, 60, true, 0x000000);
        bmdata.draw(c,null,null,null, new Rectangle(0,30,30,30));
        var bitmap:Bitmap = new Bitmap(bmdata);
        addChild(bitmap);
        bitmap.x = 80;
        bitmap.y = 10;
       }
   }
}

请注意,目标位图数据应与源具有相同的尺寸,否则将无效。如果你真的要削减它,你应该使用BitmapData :: copyPixels方法。

答案 1 :(得分:0)

最简单的方法是动态应用蒙版。这是一个很好的例子:Actionscript 3 and dynamic masks

您可以创建一个矩形,您正在寻找的高度并适当地定位它。

希望这有帮助。