Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   эффект зеркала (http://www.flasher.ru/forum/showthread.php?t=122618)

sector_222 15.03.2009 01:15

эффект зеркала
 
Здравствуйте.
переделал код с вывода фоток в вывод мувиков с зеркальным отражением

Код AS1/AS2:

 
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

Проблема в том, что вместо
Код AS1/AS2:

var pic:MovieClip = mc.attachMovie("pic","pic"+i,i);
var bmp:MovieClip = mc.createEmptyMovieClip('bmp', 2);
var mask:MovieClip = mc.createEmptyMovieClip('mask', 4);

нужно
Код AS1/AS2:

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());

А чтобы менялась альфа также и у отражений нужно
Код AS1/AS2:

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


sector_222 16.03.2009 00:11

спасибо - действительно - так правильно - но как тогда узнать на какую по счёту я именно нажимаю кнопку??? - раньше подходило
Код AS1/AS2:

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

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

Код AS1/AS2:

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

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

alekslitvinenk 16.03.2009 00:25

Можно создать поле ID у мувика pic и присваивать ему номер итерации

Код AS1/AS2:

pic.ID = i;



Часовой пояс GMT +4, время: 17:50.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.