Форум 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)
-   -   Увеличение до (_xscale=100, _yscale=100). Уменьшение до (_xscale=75, _yscale=75). (http://www.flasher.ru/forum/showthread.php?t=79004)

Olejan 29.04.2006 18:13

Увеличение до (_xscale=100, _yscale=100). Уменьшение до (_xscale=75, _yscale=75).
 
Есть массив, состоящий из конечного числа элементов (все с разными именами). Нужно чтобы при наведении на любой элемент массива этот элемент увеличивался (от первоначального состояния - функция Begin();) до (_xscale=100, _yscale=100). При отведении указателя мыши с данного элемента, он должен возвращаться в положение, описанное функцией Begin();
Листинг:
Код:

var aLogo4:Array = [mcQw, mcEr, mcTy, mcU, mcOp, mcGg, mcFg, mcFk, mcPy];
//
Begin();
for (i=0; i<aLogo4.length; i++) {
        aLogo4[i].onRollOver = function() {
                if (_root.activ_Logo4 != this) {
                        bigest();
                } else {
                        break;
                }
        };
}
//
for (i=0; i<aLogo4.length; i++) {
        aLogo4[i].onRollOut = function() {
                if (_root.activ_Logo4 != this) {
                        smallest();
                } else {
                        break;
                }
        };
}
// Исходжное положение: все 50% масштаба и 50% альфы:
function Begin():Void {
        var i:Number = 0;
        while (i<10) {
                aLogo4[i]._xscale = aLogo4[i]._yscale=aLogo4[i]._alpha=75;
                i++;
        }
}
//
function big():Void {
        aLogo4[i]._xscale++;
        aLogo4[i]._yscale++;
        updateAfterEvent();
}
//
function small():Void {
        aLogo4[i]._xscale--;
        aLogo4[i]._yscale--;
        updateAfterEvent();
}
//
function bigest():Void {
        var Int1:Number;
        if (aLogo4[i]._xscale != 100) {
                Int1 = setInterval(this, "big", 100);
                trace("Навел мышь!");
        } else {
                clearInterval(Int1);
        }
}
//
function smallest():Void {
        var Int2:Number;
        if (aLogo4[i]._xscale != 75) {
                Int2 = setInterval(this, "small", 100);
                trace("Отвел мышь!");
        } else {
                clearInterval(Int2);
        }
}

В дальнейшем надо будет отслеживать нажатый элемент массива...
Подскажите - где косяк, почему не увеличивается и не уменьшается?..

Olejan 29.04.2006 18:14

На счет разных имен - имел ввиду, что нельзя имена циклом задать! Они все уникальные!

RandomUser 29.04.2006 18:40

Разберись с областями видимости переменных.
У тебя в функциях big, small и др. используется переменная i, а откуда она по твоему мнению береться???

Olejan 29.04.2006 18:54

НИЧЕГО не могу понять: в старом добром Паскале - делаешь переменную глобально-доступной и никаких проблем! А тут черт ногу сломит...
ну подскажи, что надо сделать?..
Очень важный момент - уже не в первый раз на этом зарубаюсь...
ПОЖАЛУЙСТА...

Olejan 29.04.2006 18:56

Ну изменил я в функции Begin(); переменную с i на j.
Эффекта никакого.

Nirth 29.04.2006 18:58

перенес тему в раздел для новичков

RandomUser 29.04.2006 19:01

Переменная i у тебя задается циклом for (i=0; i<aLogo4.length; i++).
После окончания цикла i=aLogo4.length. Именно эту i ты и подсовываешь в свои функции. Т.е. у тебя обрабатывается элемент aLogo4[aLogo4.length]. Который по определению не существует...
Вывод: передавай параметром этот индекс, предварительно сохранив его в каждом мувике.

Olejan 29.04.2006 19:07

2 RandomUser:
Как передать индекс параметром - не совсем пойму о чем речь...
Тем более: что такое "сохранить индекс в каждом документе"?
RandomUser объясни плиз, лучше с листингом.
P.S. А то меня Nirth скоро за человека считать не будет! - создаст новый раздел "Для даунов" и мои посты туда перемещать будет! :(

RandomUser 29.04.2006 19:25

В флеше есть такое понятие как function... И при вызове каждой функции можно ей передавать параметры...
Код:

function big(i):Void {
        aLogo4[i]._xscale++;
        aLogo4[i]._yscale++;
        updateAfterEvent();
}

В приведенном выше премере функция, которую нужно вызвать например так:
Код:

big(10);
И функция big обработает это как
Код:

        aLogo4[10]._xscale++;
        aLogo4[10]._yscale++;
        updateAfterEvent();

Пока все понятно?
p.s.В свой проект этот код вставлять не надо!

Olejan 29.04.2006 19:31

Пока все...
У тебя аси нет?..


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

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