Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Вызов функции с параметрами через метод (http://www.flasher.ru/forum/showthread.php?t=151506)

_Ice_ 01.03.2011 00:32

Вызов функции с параметрами через метод
 
Подскажите как правильно вызвать функцию с параметрами через методы: addEventListener и setInterval.
Например вот рабочий код:
Код AS3:

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.
Я попробовал:
Код AS3:

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 представляют из себя строку (String), описывающую тип события, и ссылку на функцию (объект класса Function, так как этот класс является "сложным", его экземпляры передаются по ссылке, пусть знающие люди меня поправят, если я ошибся). Поэтому следует передавать значения через внешние переменные. Мне неизвестен полный код, но из того, что видно, можно сделать следующее:
Код AS3:

// не забывайте про типизацию переменных
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, он дополнительные параметры передает.

Добавлено через 1 час 32 минуты
А вот, что по этому поводу изрекает -De-.

_Ice_ 01.03.2011 15:48

Спасибо за помощь


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

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