PDA

Просмотр полной версии : Исполняемая функция при инициализации класса


futurator
30.04.2008, 18:07
Здравствуйте.
Скажите пожалуйста, каким образом указать функцию внутри класса, чтобы она выполнялась автоматически, НО только один раз, при импорте класса?
Спасибо.

iNils
30.04.2008, 18:34
class A {
private static var __init:Boolean = initialize ();

function A () {
}
private static function initialize ():Boolean {
trace ("init");
return true;
}
}

futurator
30.04.2008, 19:44
А как вставить в такую функцию выполнение операций над переменными?
Вот такого типа:

private static function Initialize():Boolean {
for (var i:Number = 0; i<=360; i++) {
SIN[i] = Math.sin(i);
COS[i] = Math.cos(i);
}
trace(SIN[13]);
return true;
}
В итоге выводит "undefined" при любых типах SIN и COS.
А мне требуется единожды создать таблицу со значениями, чтоб не считать их каждый раз, а брать из массивов SIN и COS.

wvxvw
30.04.2008, 19:50
А что такое SIN и COS? Я бы тоже undefined вернул %)

iNils
30.04.2008, 20:06
Синус и косинус считается быстрее, чем каждый раз брать это значение из массива.

futurator
30.04.2008, 20:30
Ух ты... Ну ладно =)
А на будущее все-таки, как оперировать переменными внутри приватной статической функции, вот на данном примере?

futurator
30.04.2008, 20:31
А что такое SIN и COS? Я бы тоже undefined вернул %)

=)))))))))

Жень Шень
01.05.2008, 11:22
Привет!
Напрасно смеетесь. Заглавными буквами принято константы писать. Имя функции пишется с малой.
class A {
private static var __init:Boolean = initialize();
function A() {
}
private static function initialize():Boolean {
var msin:Array = [];
var mcos:Array = [];
for (var i:Number = 0; i<=360; i++) {
msin[i] = Math.sin(i);
trace(msin[i]);
mcos[i] = Math.cos(i);
}
trace("msin[13]="+msin[13]);
return true;
}
}

futurator
01.05.2008, 13:33
Спасибо.
А про написание это Вы правы =)

"Мы смеемся потому что..." (С) ОСП

Alex_beginner
24.05.2008, 19:13
futurator!

Во первых директива import сама по себе вообще ни какого метода, а уж тем более функции выполнить не может, она даже класс не грузит.

1. Создание класса в результате выполнения кода конструктора класса начинается после команды new. И в этот момент при выполнении кода конструктора Вы можете обращаться к любой приватной функции (лучше делать их приватными - концепция ООП).
2. В коде Вашей функции производится вычисление синуса и косинуса причем аргументы этих функции Вы задаете в градусах. Узнать в каких единицах на самом деле задаются аргументы указанных выше функции (в градусах или в радианах) вы можете из Хелпа.
3. В статическом методе Вы можете обращаться только к локальным переменным но не свойствам класса, поскольку объект класса может быть вообще не создан, а значит и неинициализированы его свойства. А поскольку Вы локально не определили переменные COS и SIN, то и записать значения в них не представляется возможным.