Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Поиск рулит! Сообщения за день Все разделы прочитаны
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 03.11.2016, 17:07
undefined вне форума Посмотреть профиль Отправить личное сообщение для undefined Найти все сообщения от undefined
  № 1  
Ответить с цитированием
undefined

Регистрация: Oct 2006
Сообщений: 2,281
По умолчанию статик конструктор

Имеется класс А, который активно работает с тригонометрией.В целях оптимизации думаю вынести все значения тригонометрических функций в precalculated табличку.Хранить её думаю в статичном поле того же класса.Возникает вопрос где можно заполнять эту таблицу?Можно конечно это делать один раз при создании экземляра A.Но как-то оно кажется кривым т.к. табличка в будущем может понадобится другим классам.Есть ли более изящные методы?

Старый 03.11.2016, 17:13
illuzor вне форума Посмотреть профиль Отправить личное сообщение для illuzor Найти все сообщения от illuzor
  № 2  
Ответить с цитированием
illuzor
 
Аватар для illuzor

Регистрация: Dec 2010
Адрес: Ярославль
Сообщений: 1,255
Цитата:
Можно конечно это делать один раз при создании экземляра A.Но как-то оно кажется кривым т.к. табличка в будущем может понадобится другим классам.
Как-то нелогично звучит. Если при первом использовании переменные инициализируются, то больше их инициализировать не нужно и любые экземпляры смогут их использовать.

Можно, например, инициализировать переменные через паблик статик метод при запуске приложения.
Или вообще захардкодить значения, чтобы не пришлось ничего вычислять.

Старый 03.11.2016, 17:17
undefined вне форума Посмотреть профиль Отправить личное сообщение для undefined Найти все сообщения от undefined
  № 3  
Ответить с цитированием
undefined

Регистрация: Oct 2006
Сообщений: 2,281
Значения могут потребоваться еще ДО создания первого экземпляра А.Не хотелось бы что бы совершенно несвязанные классы зависили от создания чужих экземпляров.

Добавлено через 39 минут
нужно нечто типа блока static {...} в жаве

Старый 03.11.2016, 18:07
Bletraut вне форума Посмотреть профиль Отправить личное сообщение для Bletraut Найти все сообщения от Bletraut
  № 4  
Ответить с цитированием
Bletraut
 
Аватар для Bletraut

Регистрация: Mar 2013
Адрес: Вне пространства.
Сообщений: 566
Отправить сообщение для Bletraut с помощью ICQ Отправить сообщение для Bletraut с помощью Skype™
Цитата:
Сообщение от illuzor Посмотреть сообщение
...Можно, например, инициализировать переменные через паблик статик метод при запуске приложения.
Поддерживаю, других наиболее уместных решений не вижу.
__________________
Я заклинаю вас действовать иначе.

Старый 03.11.2016, 18:15
wvxvw вне форума Посмотреть профиль Отправить личное сообщение для wvxvw Найти все сообщения от wvxvw
  № 5  
Ответить с цитированием
wvxvw
Modus ponens
 
Аватар для wvxvw

модератор форума
Регистрация: Jul 2006
Адрес: #1=(list #1#)
Сообщений: 8,049
Записей в блоге: 38
Не знаю как сейчас, несколько лет назад можно было писать код статической инициализации после объявления package. Т.е. например так:

Код AS3:
package foo {
    public class Foo {
        public static var foo:Foo;
    }
}
import foo;
Foo.foo = new Foo();
__________________
Hell is the possibility of sanity

Старый 03.11.2016, 18:37
undefined вне форума Посмотреть профиль Отправить личное сообщение для undefined Найти все сообщения от undefined
  № 6  
Ответить с цитированием
undefined

Регистрация: Oct 2006
Сообщений: 2,281
wvxvw,прокатило как раз то, что надо.Благодарю

Старый 03.11.2016, 19:10
caseyryan вне форума Посмотреть профиль Отправить личное сообщение для caseyryan Найти все сообщения от caseyryan
  № 7  
Ответить с цитированием
caseyryan
 
Аватар для caseyryan

Регистрация: Jun 2012
Адрес: Новосибирск
Сообщений: 6,644
Записей в блоге: 4
Есть еще вариант сделать обычный класс синглтон. И через него дергать все методы
__________________
Ко мне можно и нужно обращаться на ты)

Старый 04.11.2016, 00:51
faraday вне форума Посмотреть профиль Отправить личное сообщение для faraday Найти все сообщения от faraday
  № 8  
Ответить с цитированием
faraday
 
Аватар для faraday

Регистрация: Apr 2009
Сообщений: 409
почему не кешировать значения по мере необходимости?
Код AS3:
private static var sins:Object={};
public static var sin(val:Number){
 return sins[val]||(sins[val]=Math.sin(val))
}

Старый 04.11.2016, 14:16
undefined вне форума Посмотреть профиль Отправить личное сообщение для undefined Найти все сообщения от undefined
  № 9  
Ответить с цитированием
undefined

Регистрация: Oct 2006
Сообщений: 2,281
тоже вариант.Только нужен контроль за размерами таблички

Старый 06.11.2016, 19:45
Nooob вне форума Посмотреть профиль Отправить личное сообщение для Nooob Найти все сообщения от Nooob
  № 10  
Ответить с цитированием
Nooob
 
Аватар для Nooob

Регистрация: Mar 2007
Сообщений: 319
Аналог блока static в джаве это вызов static функции в месте определения static полей
Код AS3:
package
{
	public class F
	{
		public static const a:Vector.<int> = new Vector.<int>();
		private static function b():void
		{
			for(var i:int = 0; i < 10; ++i)
			{
				a.push(i);
			}
		}
		b();
	}
}
Есть еще такие варианты:
Код AS3:
package
{
	public class F
	{		
		public static const c:Vector.<int> = function():Vector.<int>
		{
			var v:Vector.<int> = new Vector.<int>();
			for(var i:int = 0; i < 10; ++i)
			{
				v.push(i);
			}
			return v;
		}();
	}
}
Код AS3:
package
{
	public class F
	{
		public static const d:Vector.<int> = new Vector.<int>();
		d.push(0);
		d.push(1);
		d.push(2);
		d.push(3);
		d.push(4);
		d.push(5);
	}
}
Вызываться будет по разному, во FlexSDK при первом обращении к классу, в AirSDK после запуска


Последний раз редактировалось Nooob; 06.11.2016 в 19:57.
Создать новую тему Ответ Часовой пояс GMT +4, время: 09:25.
Быстрый переход
  « Предыдущая тема | Следующая тема »  
Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


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


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