Codice PHP:
function drawAlphaRoundRect(target:MovieClip, name:String, level:Number, width:Number, height:Number, radius:Number, border:Number, borderColor:Number, color:Number, alpha:Number, initObject:Object):MovieClip {
target.createEmptyMovieClip(name, level);
with (target[name]) {
if (initObject != undefined) {
_x = initObject._x != undefined ? initObject._x : 0;
_y = initObject._y != undefined ? initObject._y : 0;
_xscale = initObject._xscale != undefined ? initObject._xscale : 100;
_yscale = initObject._yscale != undefined ? initObject._yscale : 100;
_alpha = initObject._alpha != undefined ? initObject._alpha : 100;
_rotation = initObject._rotation != undefined ? initObject._rotation : 0;
alphaFill = initObject.alphaFill != undefined ? initObject.alphaFill : 100;
} else {
_x = 0;
_y = 0;
_xscale = 100;
_yscale = 100;
_alpha = 100;
_rotation = 0;
alphaFill = 100;
}
colors = [color, color];
alphas = [alpha, 0];
ratios = [0, 255];
lineStyle(((border != 0) ? border : undefined), borderColor, 100, false, "normal", "none", "miter", 255);
matrix = {matrixType:"box", x:0, y:0, w:width, h:height, r:(90/180)*Math.PI};
beginGradientFill("linear", colors, alphas, ratios, matrix);
moveTo(0, height);
lineTo(0, radius);
curveTo(0, 0, radius, 0);
lineTo(width-radius, 0);
curveTo(width, 0, width, radius);
lineTo(width, height);
lineTo(0, height);
endFill();
}
return target[name];
}
function reflectClip (target:MovieClip, distance:Number, alphafill:Number, intensity:Number):MovieClip {
var version = getVersion().split(",").join("").split(" ").join("").split("WIN").join("").substr(0, 1);
var temp = target._parent.createEmptyMovieClip("temp", target._parent.getNextHighestDepth());
if (version>=8) {
temp.createEmptyMovieClip("t1",1);
drawAlphaRoundRect(temp,"t2",2,target._width,target._height,0,0,0,0,alphafill,{_x:target._width, _y:target._height, _rotation:180,_yscale:intensity});
temp.b = new flash.display.BitmapData(target._width, target._height, true, 0x00000000);
temp.b.draw(target);
temp.t1.attachBitmap(temp.b,1);
temp.t1.cacheAsBitmap = temp.t2.cacheAsBitmap=true;
temp.t1.setMask(temp.t2);
var m:MovieClip = target._parent.createEmptyMovieClip("reflection", target._parent.getNextHighestDepth());
var b:flash.display.BitmapData = new flash.display.BitmapData(target._width, target._height, true, 0x00000000);
b.draw(temp);
m.attachBitmap(b,1);
temp.removeMovieClip();
m._yscale = -100;
m._x = target._x;
m._y = (target._y+target._height*2)+distance;
}
return m;
}
// utilizzo:
var r:MovieClip = reflectClip(prova, 30, 50, 50);
[edit] ho modificato leggermente la funzione per comprendere la distanza, l'intensità e l'opacità del riflesso, se l'hai già scaricata, riprendila così modificata