Просмотр полной версии : Исполняемая функция при инициализации класса
futurator
30.04.2008, 18:07
Здравствуйте.
Скажите пожалуйста, каким образом указать функцию внутри класса, чтобы она выполнялась автоматически, НО только один раз, при импорте класса?
Спасибо.
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.
А что такое SIN и COS? Я бы тоже undefined вернул %)
Синус и косинус считается быстрее, чем каждый раз брать это значение из массива.
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, то и записать значения в них не представляется возможным.
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.