позиционирование растровых данных - PullRequest
0 голосов
/ 27 февраля 2011

У меня есть следующий код:

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. И это начинается в верхней части изображения. Но как я могу сказать растровым данным начать рисовать изображение, скажем, 80 пикселей? так он рисует средний кусок изображения? Потому что он всегда рисует сверху изображения.

Ответы [ 2 ]

3 голосов
/ 27 февраля 2011

Вы должны использовать параметр 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.

0 голосов
/ 27 февраля 2011

Самый простой способ - применить маску динамически.Вот хороший пример: Actionscript 3 и динамические маски

Вы можете создать прямоугольник, высоту, которую вы ищете, и расположить ее соответствующим образом.

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...