醒着☆☆

H5 Laya Native Game

  博客园 :: 首页 :: 新随笔 :: 联系 :: :: 管理 ::

最近做项目,需要用到了
加载进来的位图 需要剔除掉里面的背景色
因为手机不像flash,
lite手机里面不支持png 和gif 的背景透明图片
所以当我加载一个手机的ico的时候,
图标Ico都有一个黑色的背景。
起初看到是
BitmapData.threshold();
可是里面的32位色的确让我不易理解
----------------------------------------------

后来看了getPixel(x,y)  setPixel(x,y,color)
----------------------------------------------
stop();
import flash.display.BitmapData;
import flash.geom.Point;
import flash.geom.Rectangle;
var tempBitmapData:BitmapData = BitmapData.loadBitmap("myImg");
var myBitmapData:BitmapData = new BitmapData(tempBitmapData.width, tempBitmapData.height, true, 0x00000000);//创建透明 BitmapData 对象
myBitmapData.draw(tempBitmapData);
tempBitmapData.dispose();//释放临时 BitmapData 对象内存
var mc:MovieClip = this.createEmptyMovieClip("mc", this.getNextHighestDepth());
mc.attachBitmap(myBitmapData,this.getNextHighestDepth());
mc.onPress = function() {
 for (var i:Number = 0; i<myBitmapData.width; i++) {
  for (var j:Number = 0; j<myBitmapData.height; j++) {
   //利用循环判断每个点的像素是否符合条件
   //如果条件仅仅是一个判断,检测到的点很少,所以加了个   范围 
   //具体这个范围该怎么定,还需要高手指点下
   if (myBitmapData.getPixel(i, j)>= 0x000000&&myBitmapData.getPixel(i, j)<=0x999999) {
    myBitmapData.setPixel32(i, j,0x00000000);
   }
  }
 }
};

-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
小球沿着路径运动

import flash.display.BitmapData;
import flash.geom.Point;
var pointArr:Array = [];
var ypos:Number = 200;
var curve:MovieClip = this.createEmptyMovieClip("curve", 10);
with (curve) {
 lineStyle(1, 0xFF0000);
 moveTo(0, ypos);
 for (var i:Number = 0; i<550; i += 6) {
  lineTo(i, ypos+i/10*Math.sin(i/20));
 }
}
var X:Number = curve._width;
var Y:Number = ypos+curve._height;
var copyBitmap:BitmapData = new BitmapData(X, Y, true, 0);
copyBitmap.draw(curve);
var color:Number = Number(0xFF0000);
for (var i:Number = 0; i<X; i += 10) {
 for (var j:Number = 0; j<Y; j++) {
  if (copyBitmap.getPixel(i, j) == color) {
   pointArr.push(new Point(i, j));
   break;
  }
 }
}
copyBitmap.dispose();
var ball:MovieClip = this.createEmptyMovieClip("ball", 20);
with(ball){
 lineStyle(20);
 moveTo(0, 0);
 lineTo(.2, 0);
}
this.onEnterFrame = function() {
 ball._x = pointArr[0].x;
 ball._y = pointArr[0].y-10;
 pointArr.shift();
 if (pointArr.length == 0) {
  delete this.onEnterFrame;
  trace("over");
 }
};

posted on 2008-11-04 23:23  醒着/☆☆  阅读(296)  评论(0)    收藏  举报