2012年10月10日 星期三

Flash Native As3 基礎總整理(1-2)Bitmap與BitmapData

1.操作個別像素setPixel();
2.操作個別矩形區域像素setPixels(rect, bytes);

package  
{
 import com.greensock.TweenMax;
 import flash.display.Bitmap;
 import flash.display.BitmapData;
 import flash.display.Sprite;
 import flash.geom.Rectangle;
 import flash.text.TextField;
 import flash.text.TextFormat;
 import flash.utils.ByteArray;
 
 /**
  * 改變BitmapPixcel應用
  * ...
  * @author Ray Cheng
  */
public class BitmapPixcelDemo extends Sprite 
{
 [Embed(source = "../bin/fb.jpg")]
 private static const BitmapJpg:Class;
 
public function BitmapPixcelDemo() 
{
 setBitmapSingleLine();
 setBitmapRectangle();
}
  
private function setBitmapSingleLine():void 
{
 var myBitmapData:BitmapData = new BitmapData(100, 100, false, 0x00ffff); 
 
 for (var i:uint = 0; i < 50; i++) 
 { 
  TweenMax.to(this, 0, { delay:0.2 * i,onCompleteParams:[i], onComplete:function(pI:uint):void   
 {
 var red:uint = 0xFF0000; 
 myBitmapData.setPixel(pI, pI*2, red); 
 myBitmapData.setPixel(50+pI, 100-pI*2, red);      
 }})
    
} 
   
 var myBitmapImage:Bitmap = new Bitmap(myBitmapData); 
 addChild(myBitmapImage); 
   
 //--取得pixcel資訊
 var pixelValue:uint = myBitmapData.getPixel(50, 50); 
 trace(pixelValue.toString(16));
}
  
private function setBitmapRectangle():void 
{
 var bitmapImage1:Bitmap = new BitmapJpg(); 
 addChild(bitmapImage1); 
   
 var bitmapDataObject1:BitmapData = bitmapImage1.bitmapData; 
 var bitmapDataObject2:BitmapData = new BitmapData(150, 150, false, 0x00FF0000); 
    
 var rect:Rectangle = new Rectangle(0, 0); 
 var bytes:ByteArray;
   
 for (var i:uint = 0; i < 100; i++) 
 { 
 TweenMax.to(this, 0, { delay:0.2 * i,onCompleteParams:[i], onComplete:function(pI:uint):void   
 {
 rect.width = pI;     
 rect.height = pI; 
 bytes = bitmapDataObject1.getPixels(rect);
 bytes.position = 0; 
 bitmapDataObject2.setPixels(rect, bytes);      
  }})
    
  } 
  //trace(BitmapJpg)
 
  var bitmapImage2:Bitmap = new Bitmap(bitmapDataObject2); 
  addChild(bitmapImage2); 
  bitmapImage2.x = 160;
  bitmapImage1.y = bitmapImage2.y = 200;
   
  var $text0:TextField
  setTextField($text0,"改變原有的Bitmap內的單點像素",105);
   
  var $text1:TextField
  setTextField($text1,"改變原有的Bitmap內的矩形區域像素",355);
}
  
private function setTextField(pText:TextField,pTxtCont:String,pY:uint):void 
{
  pText = new TextField();
  pText.y = pY;
  pText.width = 350;
  pText.defaultTextFormat = new TextFormat("", 20, 0xffffff);
  pText.text = pTxtCont;
  addChild(pText);
}
  
}
}

沒有留言:

張貼留言

我的留言版