介于很多人都不会控制倒影的透明效果
我这里优化了一下 单独把这个mc提出来 你可以直接使用外部的mc来作为透明效果 或是用代码里面提供的 支持设置透明区域的alpha和rotaion
mirror里面的参数第一个必添 剩下的不愿意添就不添 就是附加效果
复制内容到剪贴板
代码:
import flash.display.BitmapData;
import flash.geom.*;
import com_zszen.spirit.create;
import com_zszen.spirit.draw;
function mirror(mc, obj, drawmc) {
//镜面效果
//mc必须是左上角对齐
var w, h, alpha, rotation;
w = obj.width ? obj.width : mc._width;
h = obj.height ? obj.height : mc._height;
alpha = obj.alpha != null ? (255-obj.alpha/100*255) : 128;
rotation = obj.rotation ? obj.rotation : 90;
var bd:BitmapData = new BitmapData(w, h, true, 0);
bd.draw(mc);
var pmc = create.Movie(mc._parent, mc._name+"_mirro");
if (obj.x) {
pmc._x = obj.x;
}
if (obj.y) {
pmc._y = obj.y;
}
if (obj.xscale) {
pmc._xscale = obj.xscale;
}
if (obj.yscale) {
pmc._yscale = obj.yscale;
}
var bd2 = new BitmapData(w, h, true, 0);
if (drawmc == null) {
var alphabg:MovieClip = create.Movie(pmc, "alphabg");
var m = new Matrix();
m.rotate(rotation/180*3.14);
m.scale(.1, .08);
alphabg._y -= h;
alphabg.lineStyle();
alphabg.beginGradientFill("linear", [0x0, 0x0], [0, 100], [alpha, 255], m);
draw.box(alphabg, {x:0, y:0}, {x:w, y:h});
alphabg.endFill();
alphabg._visible = false;
bd2.draw(alphabg);
} else {
cmc._visible=false
bd2.draw(drawmc);
}
bd.copyPixels(bd, bd.rectangle, bd.rectangle.topLeft, bd2, bd2.rectangle.topLeft);
var mir:MovieClip = create.Movie(pmc, "mirror");
mir.attachBitmap(bd, 1);
mir._yscale = -100;
return pmc;
}
onEnterFrame = function () {
var mc = mirror(me, {x:me._x, y:me._y+200, width:me._width, height:100, alpha:100}, cmc);
};