PDA

Просмотр полной версии : Вызов функции с параметрами через метод


_Ice_
01.03.2011, 00:32
Подскажите как правильно вызвать функцию с параметрами через методы: addEventListener и setInterval.
Например вот рабочий код:

var inter1;
var Mr;
var c:MouseEvent;
Knopka.addEventListener(MouseEvent.ROLL_OVER, reg4 );

function reg4( c ){
inter1 = setInterval(izm14,50);
}
function izm14( ){
Mr += 2;
}

А как сделать чтобы функция reg4 вызывалась с параметром интервала, а izm14 с параметром числа на которое надо изменить Mr.
Я попробовал:

var inter1;
var Mr;
var c:MouseEvent;
Knopka.addEventListener(MouseEvent.ROLL_OVER, reg4(50,2) );

function reg4( c, K, D ){

inter1 = setInterval(izm14(D),K);
}
function izm14(B){
Mr += B;
}

но так ничего не работает. Так как же вызывать функции с параметрами через методы?

bav
01.03.2011, 01:20
Два первых аргумента метода addEventListener (http://help.adobe.com/ru_RU/AS3LCR/Flash_10.0/flash/events/EventDispatcher.html#addEventListener%28%29) представляют из себя строку (String), описывающую тип события, и ссылку на функцию (объект класса Function, так как этот класс является "сложным", его экземпляры передаются по ссылке, пусть знающие люди меня поправят, если я ошибся). Поэтому следует передавать значения через внешние переменные. Мне неизвестен полный код, но из того, что видно, можно сделать следующее:

// не забывайте про типизацию переменных
var inter1:int;
// и их инициализацию
var Mr:int = 0;

// эта переменная странна для меня,
// я ее закомментирую и изменю сигнатуру функции reg4()
// var c:MouseEvent;
// А вместо нее создам другие переменные
var delay:int = 50; // K
var summand:int = 2; // B

Knopka.addEventListener(MouseEvent.ROLL_OVER, reg4);

// Также не стоит забывать о типизации параметров функции
// и возвращаемого значения
function reg4( event:MouseEvent ):void {
// вот здесь, скажем, можно изменить delay и summand
delay = 200;
summand = 3;
inter1 = setInterval(izm14, delay);
}
function izm14():void {
Mr += summand;
}



Добавлено через 11 минут
Да, expl был прав насчет setInterval (http://help.adobe.com/ru_RU/AS3LCR/Flash_10.0/flash/utils/package.html#setInterval%28%29), он дополнительные параметры передает.

Добавлено через 1 час 32 минуты
А вот (http://www.flasher.ru/forum/blog.php?b=239), что по этому поводу изрекает -De-.

_Ice_
01.03.2011, 15:48
Спасибо за помощь