Просмотр полной версии : Выполнение функций по клику
Gasoline
03.02.2013, 11:58
Есть огромное количество самых разных функций. Необходимо выполнять их по одной по каждому клику.
// список функций
trace('Hello');
myFunction(1, 20);
myAnotherFunction();
// при первом клике выполняется функция 'trace', при втором 'myFunction' и т.д.
Как это лучше реализовать?
caseyryan
03.02.2013, 13:28
в массив их пометить и по каждому клику увеличивать итератор на 1
Gasoline
03.02.2013, 18:43
У меня получилось так
var iF:Number = 0; // итератор
var myArray:Array = new Array(
'myFunction_5-10',
'myAnotherFunction_1-5-10',
'trace_"hello"'
/* создаем массив с функциями.
Имя функций от аргументов отделяем символом "_".
Аргументы друг от друга "-"
*/
);
_root.onMouseUp = function() {
currentFunction = myArray[iF].split('_');
// разделяем имя функции от аргументов
var arg:Array = currentFunction[1].split('-');
// разделяем аргументы
_global[currentFunction[0]].apply(null,arg);
iF++;
// вызываем функцию и увеличиваем счетчик
};
// примеры функций
_global.myFunction = function(a, b) {
trace(b+'/'+a+'='+b/a);
};
_global.myAnotherFunction = function() {
trace(arguments);
};
Работать работает, но думаю можно и по лучше без шаманства.
caseyryan
03.02.2013, 20:57
но думаю можно и по лучше без шаманства.
Наверняка можно. Все зависит от конкретной задачи. Что-то мне подсказывает что это вообще можно сделать по-другому.
Зачем вам вызывать функции по порядку? Что конкретно должно происходить при этом?
Gasoline
04.02.2013, 11:07
Всё что угодно, но в основном должны появляться картинки и определенный текст. Подробней здесь. (http://ru.wikipedia.org/wiki/%D0%92%D0%B8%D0%B7%D1%83%D0%B0%D0%BB%D1%8C%D0%BD%D1%8B%D0%B9_%D1%80%D0%BE%D0%BC%D0%B0%D0%BD)
Можно без итератора, если с Array.shift() поработать.
И кстати, это плохая практика так называть переменные: "iF".
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.