最近做项目,需要用到了
加载进来的位图 需要剔除掉里面的背景色
因为手机不像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");
}
};

浙公网安备 33010602011771号