【问题标题】:positioning bitmapdata定位位图数据
【发布时间】:2011-02-27 19:08:13
【问题描述】:

我有以下代码:

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;
        }

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

【问题讨论】:

    标签: actionscript-3 actionscript


    【解决方案1】:

    您应该使用 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 方法。

    【讨论】:

      【解决方案2】:

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

      您可以创建一个矩形、您要查找的高度并适当地放置它。

      希望这会有所帮助。

      【讨论】:

      • 这对我不起作用,因为我真的很想拥有这件作品本身。
      • 我不明白你的意思是拥有作品本身?
      猜你喜欢
      • 1970-01-01
      • 2011-02-22
      • 2013-12-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多