PDA

Просмотр полной версии : эффект зеркала


sector_222
15.03.2009, 01:15
Здравствуйте.
переделал код с вывода фоток в вывод мувиков с зеркальным отражением



this.createEmptyMovieClip("container_mcZ",this.getNextHighestDepth());
container_mcZ._x = _root.goriz_x;
container_mcZ._y = _root.goriz_y;

for (var i = 0; i<10; i++) {
var mc:MovieClip = container_mcZ.createEmptyMovieClip(i, container_mcZ.getNextHighestDepth());
var pic:MovieClip = mc.attachMovie("pic","pic"+i,i);
var bmp:MovieClip = mc.createEmptyMovieClip('bmp', 2);
var mask:MovieClip = mc.createEmptyMovieClip('mask', 4);

mc._x = 81.3*i;

var mc = pic._parent;
mc.varTween = new Tween(mc, '_alpha', Regular.easeOut, 0, 100, 2, true);
reflect(pic);
setupReflection(pic);

//*************************************реаKция на события*********************************
pic.onRelease = function() {

var id2:Number = this.getDepth(mc);
trace(id2);

};
pic.onRollOver = function() {
this._alpha = 50;

};
pic.onRollOut = function() {
this._alpha = 100;
};
}


function reflect(mc:MovieClip) {
var bmp = mc._parent.bmp;
var bitmap:BitmapData = new BitmapData(mc._width, mc._height, true, 0);
bitmap.draw(mc);
bmp.attachBitmap(bitmap, 2, 'auto', true);
bmp._yscale = -100;
bmp._y = mc._height*2+5; //расстояние тени от картинки
bmp._x = mc._x;
bmp.filters = [blur]
}
function setupReflection(mc:MovieClip) {
var mask = mc._parent.mask;
var bmp = mc._parent.bmp;
//
with (mask) {
_y = mc._height+5;
matrix = new Matrix();
matrix.createGradientBox(mc._width, mc._height, Math.PI/2, 40, -30);// -50 - маштаб тени
beginGradientFill('linear', [0x000000, 0xffffff], [100, 0], [0, 0xff], matrix, 'pad', 'RGB', 1);
moveTo(0, 0);
lineTo(mc._width, 0);
lineTo(mc._width, mc._height);
lineTo(0, mc._height);
lineTo(0, 0);
endFill();
}
bmp.cacheAsBitmap = true;
mask.cacheAsBitmap = true;
mask._alpha = 80;
bmp.setMask(mask);

}





но почему-то 2-й и 4-й мувики не выводит.
и как сделать чтобы при наведении курсора - менялась альфа не только на мувике но и на его отражении?

alekslitvinenk
15.03.2009, 18:16
Проблема в том, что вместо
var pic:MovieClip = mc.attachMovie("pic","pic"+i,i);
var bmp:MovieClip = mc.createEmptyMovieClip('bmp', 2);
var mask:MovieClip = mc.createEmptyMovieClip('mask', 4);

нужно
var pic:MovieClip = mc.attachMovie("pic","pic"+i,mc.getNextHighestDepth());
var bmp:MovieClip = mc.createEmptyMovieClip('bmp', mc.getNextHighestDepth());
var mask:MovieClip = mc.createEmptyMovieClip('mask', mc.getNextHighestDepth());
А чтобы менялась альфа также и у отражений нужно
pic.onRollOver = function() {
this._parent._alpha = 50;
};
pic.onRollOut = function() {
this._parent._alpha =100;
};

sector_222
16.03.2009, 00:11
спасибо - действительно - так правильно - но как тогда узнать на какую по счёту я именно нажимаю кнопку??? - раньше подходило
var id2:Number = this.getDepth(mc);
trace(id2);



Добавлено через 1 минуту
прошу прощения - затупил


var id2:Number = this._parent.getDepth();
trace(id2);



Добавлено через 1 минуту
=) =) =)

alekslitvinenk
16.03.2009, 00:25
Можно создать поле ID у мувика pic и присваивать ему номер итерации

pic.ID = i;