Форум 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=139199)

maycry 25.04.2010 19:50

Организация хранилища констант
 
Здравствуйте, нуждаюсь в совете по такому вопросу. В моем проекте необходимо место для хранения определённых констант (масс, радиусов, скоростей различных космических тел). Хотелось бы узнать как организовать такое хранилище, что бы доступ к нему имелся из любого класса, например в виде такой конструкции Astro.Sun.Radius (доступ к значению радиуса Солнца), как это организовано с классом Math, когда вводя Math.PI получаю доступ к значению числа Пи. Заранее спасибо.

BlooDHounD 25.04.2010 19:56

static

Bgg 25.04.2010 19:58

Гляньте исходный код Math и увидите:
Код AS3:

package
{
        /// The Math class contains methods and constants that represent common mathematical functions and values.
        public class Math extends Object
        {
                ...
                public static const PI : Number;
                ...
        }
}

В вашем случае будет
Код AS3:

package
{
        public class Sun extends Object
        {
                ...
                public static const RADIUS : Number;
                ...
        }
}


maycry 25.04.2010 20:41

Спасибо большое. Сделал. Всё работает. Посмотрел по вашему совету класс Math и немного растерялся. Там объявляются только константы и функции. А где собственно хранятся тела функций и значения констант, и что это за конструкция
Код AS3:

intrinsic class Math{
...
}


wvxvw 25.04.2010 20:49

То, что вы возможно увидели - это intrinsic класс, т.е. не настоящий, а только для автокомплита, например. Настоящий класс написан на C или может быть C++ и исходников его в публичном доступе либо нет, либо надо смотреть исходники Тамарина, может там и есть.

maycry 25.04.2010 20:51

Все понял, спасибо.

BlooDHounD 25.04.2010 21:07

wvxvw, класс вполне себе настоящий =) просто это интерфейс для сишных методов. иногда в них бывает и код.

mikhailk 25.04.2010 22:02

Я параметры и константы храню в файле GlobalParameters.as в корневом каталоге:

Код AS3:

package {
    public var GlobalParameters:Object  = {
                                                param1:"value1",
                                                param2:"value1",
                                                param3:"value1",
                                                param4:"value1",
                                                param5:"value1"
                                        };
}

Доступ из любого класса приложения GlobalParameters.param1, GlobalParameters.param2 и т.д.

mickfallout 25.04.2010 22:10

mikhailk, у Вас это получаются не константы, их изменить можно. Причем Вы видимо забыли static написать, вообще доступ не получится без извращений...

Добавлено через 13 минут
И автокомплит не будет работать, короче ужас, имхо. По моему лучше хранить константы в тех классах к которым они относятся. В виде статических констант. Это кроме всего прочего ещё и быстрее работать будет.

wvxvw 25.04.2010 23:48

BlooDHounD: интерфейс это настоящий класс?

mickfallout: статик не нужен, но GlobalParameters действительно не будет константой, равно как и его ключи. Что касается констант в AS вообще, то, скажем так, они вобщем-то по поведению не константы, т.как они ссылки, а не значения. Т.е. при компиляции упоминания строковых констант не заменяется строками-значениями. Кроме того класс Class динамический, поэтому доступ к его свойствам немного медленнее, чем доступ к свойствам не динамических объектов.


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

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