|
|
« Предыдущая тема | Следующая тема » |
Опции темы | Опции просмотра |
|
|
|||||
Как получить приватную переменную из статик-функции внутри класса?
Привет!
Есть некий класс TTest.as. package { public class TTest { private var libItems:Vector.<myData> = new Vector.<myData>(); public function TTest():void { super(); } public static function getPriVar():void{ trace(TTest().libItems); } }//END OF CLASS }//END OF PACKAGE class myData{ public var LibName:String; public var LibPath:String; } 1136: Incorrect number of arguments. Expected 1. При том что у TTest нет никаких переменных при инициализации. Что не так? Добавлено через 2 минуты Кстати, статической переменную libItems я тоже не могу сделать т.к. Вектору почему то она не нравится и вылетает другая более громоздкая ошибка о несовпадении типов.
__________________
uglan |
|
|||||
Не уверен, но похоже здесь надо использовать синглтон.
Класс TTest: package { public class TTest { private var libItems:Vector.<myData> = new Vector.<myData>(); private static var _instance:TTest; public function TTest():void { if (_instance != null) { throw("Error"); } _instance = this; } public static function getInstance():TTest { return (_instance == null) ? new TTest() : _instance; } public function getPriVar():Vector.<myData> { return libItems; } } } class myData { public var LibName:String; public var LibPath:String; } ... P.S. Соглашусь с strangedk. Я бы тоже не стал в вашем случае использовать статические методы, синглтон и т.д. Раскажите подробнее как вы хотите использовать класс TTest? Зачем всей программе знать о нем? Последний раз редактировалось TWETTI; 08.01.2013 в 16:57. |
|
|||||
Полезность статики здесь сомнительна.
__________________
adobe AS3 manual |
|
|||||
2 uglan
Статические функции работают только со статическими переменными. Никак не иначе. Если вектор по какой-либо причине не можете сделать статическим, оберните его в класс и сделайте экземпляр этого класса-обертки статическим в вашем рабочем классе.
__________________
interplanety |
|
|||||
Цитата:
__________________
uglan |
|
|||||
у Hemanth Sharma видел замечательный пример с таким же статическим обращением к базе текстур, только там они еще и кешируются, путем занесения в Dictionary. А ключем выступает имя переменной.
Очень удобно выходит. Разве что я бы ключи перенес в константы. Добавлено через 3 минуты а вот и примерчик: (пример для starling, но думаю суть понятна) package { import flash.display.Bitmap; import flash.utils.Dictionary; import starling.textures.Texture; /** * * @author hsharma * */ public class Assets { /** * Background Assets */ [Embed(source="../media/graphics/bgLayer1.jpg")] public static const BgLayer1:Class; [Embed(source="../media/graphics/bgWelcome.jpg")] public static const BgWelcome:Class; /** * Texture Cache */ private static var gameTextures:Dictionary = new Dictionary(); } public static function getTexture(name:String):Texture { if (gameTextures[name] == undefined) { var bitmap:Bitmap = new Assets[name](); gameTextures[name] = Texture.fromBitmap(bitmap); } return gameTextures[name]; } } }
__________________
adobe AS3 manual |
|
|||||
Цитата:
А в чем неудобство? Сделайте обычный класс для графики. Сделайте статический экземпляр этого класса в классе основного приложения. Обращайтесь к нему (экземпляру графики) откуда хотите через Package.MyMainClass.MyGraphicClass.
__________________
interplanety |
|
|||||
Хороший пример Спасибо!
Только вот этот момент показался мне довольно хрупким Почему он сразу не добавляет текстуры при инициализации класса? А при вызове getTexture() можно было бы просто делать проверку на наличие объекта в Dictionary.
__________________
uglan |
|
|||||
Так в этом весь фокус. Пока к текстуре не обращаются - она не будет занимать память.
А как только обратится кто-нибудь - то далее она будет браться уже из кеша.
__________________
adobe AS3 manual |
|
|||||
Цитата:
Добавлено через 1 минуту А разве время на ее воссоздание не потребуется? Задержки я имею в виду.
__________________
uglan |
Часовой пояс GMT +4, время: 01:45. |
|
« Предыдущая тема | Следующая тема » |
Теги |
static |
|
|