ecco qui un pochino migliorata anche nella creazione dello specchio, sfrutta il metodo refresh() che quando viene richiamato ridisegna gli elementi dentro il clip "mirror"
Codice PHP:
import flash.display.BitmapData;
import flash.geom.Matrix;
class Mirror {
private var __t:MovieClip;
private var __d:Number;
private var __o:Number;
private var __u:Number;
private var __m:MovieClip;
private var __b:MovieClip;
private var __g:MovieClip;
private var __v:Array;
function Mirror (t:MovieClip, d:Number, o:Number, u:Number) {
__t = t;
__d = d;
__o = o;
__u = u;
__m = __t._parent.createEmptyMovieClip("mirror", __t._parent.getNextHighestDepth());
__init__ ();
}
private function __init__ () {
__b = __m.createEmptyMovieClip("bitmap", 1);
__g = __m.createEmptyMovieClip("gradient", 2);
__gradientshape__(__g, __t._width, __t._height*(__u/100), __o);
__b.cacheAsBitmap = __g.cacheAsBitmap = true;
__b.setMask(__g);
__v = [];
__v.push(new BitmapData(__t._width, __t._height, true, 0));
__v.push(new Matrix());
__v.push(__t.getRect(__t));
__v[1].translate(-__v[2].xMin, -(__t._height+__v[2].yMin));
__v[1].scale(1, -1);
__v[0].draw(__t, __v[1]);
__b.attachBitmap(__v[0], 1);
__b._x = __g._x = __v[2].xMin+1;
__b._y = __g._y = __v[2].yMin;
__m._x = __t._x;
__m._y = __t._y+__t._height+__d;
}
private function __gradientshape__ (t:MovieClip, w:Number, h:Number, a:Number) {
var matr:Matrix = new Matrix();
matr.createGradientBox(w, h, 90/180*Math.PI, 0, 0);
t.beginGradientFill("linear", [0, 0], [a, 0], [0, 255], matr, "pad");
t.lineTo(w, 0);
t.lineTo(w, h);
t.lineTo(0, h);
t.lineTo(0, 0);
t.endFill();
}
public function refresh () {
__b.removeMovieClip();
__g.removeMovieClip();
__init__();
}
public function set distance (d:Number) {
__d = d;
}
public function get distance ():Number {
return __d;
}
public function set opacity (o:Number) {
__o = o;
}
public function get opacity ():Number {
return __o;
}
public function set uncovered (u:Number) {
__u = u;
}
public function get uncovered ():Number {
return __u;
}
public function get mirror ():MovieClip {
return __m;
}
}
nel mio esempio l'ho usata così:
Codice PHP:
var r:Mirror = new Mirror (prova, 0, 50, 50);
onEnterFrame = function () {
r.refresh();
}
setTimeout(function(){prova.prova.text = "ciao"}, 5000);
setTimeout(function(){prova.prova.text = "f*ck"}, 10000);
setTimeout(function(){prova.prova.text = "riprova"}, 15000);
usando il setTimeout per cambiare il testo dentro al campo (deve essere dinamico, chiamarsi "prova" e avere il testo incorporato)