2010-06-18 64 views
0

我使用jpeg编码器脚本。在脚本示例中,影片剪辑会转换为jpeg。不同的是我想转换舞台,但只有一部分如x:320-500,y:0-600。可能吗?获得舞台的某些部分?

function createJPG(m:MovieClip, quality:Number, fileName:String) 
{ 
    var jpgSource:BitmapData = new BitmapData (m.width, m.height); 
    jpgSource.draw(m); 

    var jpgEncoder:JPGEncoder = new JPGEncoder(quality); 
    var jpgStream:ByteArray = jpgEncoder.encode(jpgSource);  
    ... 
} 

create(partOfStage,90,"name"); 

回答

5

已经发布的答案可能会有效,但有一个更简单的方法。 Matrix是你的朋友在这里。

这也使用较少的资源:只有一个的BitmapData,只因为它需要大(也就是那样大面积作物):

// x:320-500, y:0-600 
// --> x: 320, y: 0, width: (500-320), height: (600 - 0) 
var cropArea:Rectangle = new Rectangle(320,0,180,600); 
var mat:Matrix = new Matrix(); 
mat.translate(-cropArea.x,-cropArea.y); 
var snapshot:BitmapData = new BitmapData(cropArea.width,cropArea.height); 
snapshot.draw(stage,mat); 

可以避开矩形但我在我看来,它更具可读性。

+0

你是对的! :) – OXMO456 2010-06-19 09:04:02

1

的功能下面是一个简单的例子:

graphics.beginFill(0x000000); 
graphics.drawRect(0, 0, 100, 100); 
graphics.endFill(); 
graphics.lineStyle(0,0xFF0000); 
graphics.moveTo(0, 0); 
graphics.lineTo(100, 100); 
graphics.beginFill(0xFF0000); 
graphics.drawRect(95, 95, 5, 5); 
graphics.endFill(); 
//   
var captureArea:Rectangle=new Rectangle(80,80,100,100);   
var bitmapData1:BitmapData=new BitmapData(stage.stageWidth, stage.stageHeight,true,0); 
var bitmapData2:BitmapData=new BitmapData(captureArea.width, captureArea.height,false,0x00FF00); 
bitmapData1.draw(stage, null, null, null); 
bitmapData2.copyPixels(bitmapData1, captureArea, new Point()); 
var bitmap:Bitmap=new Bitmap(bitmapData2); 
bitmap.x=100; 
bitmap.y=100; 
addChild(bitmap); 

希望它会帮助你的!