|
|
|||||
Регистрация: Aug 2012
Сообщений: 108
|
структура данных
Добрый день, у меня такой вопрос:
Если делаешь параметры классом, например public class Skills { public var intellect:Number; public var bravery:Number; public var leadership:Number; } а если - то нет. Как в Object автодополнение кода включить? Или например хочу в классе все переменные заполнить рандомом какая конструкция должна быть? |
|
|||||
Нуб нубам
модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
|
Object — динамический класс, и задаваемые Вами свойства динамические {intellect: Number, bravery: Number, leadership: Number}. То есть они непостоянны, могут во время исполнения вообще удаляться, могут добавляться другие. Компилятор не берет на себя ответственности за динамические свойства, он не может контролировать, что и как будет происходить в рантайме. Он не может проанализировать код на предмет, будет ли в данном месте кода у этого обжекта такое свойство или нет. Может быть, оно вообще добавляется обжекту или наоборот, удаляется из него, в обработчике нажатия на кнопку, например. То есть гарантировать его наличие компилятор не может в принципе, на то оно и динамическое. Поэтому никакого автокомплита. А вот с инициализацией по перечислению все прямо наоборот — перечисляются с for each только динамические свойства, а члены класса — нет. То есть Вы можете соединить два последних кода и заменить this на skills
__________________
Reality.getBounds(this); |
|
|||||
Регистрация: Aug 2012
Сообщений: 108
|
да я так и понял, что объект - динамический, жаль нельзя его финализировать) А насчет класса - придется использовать старую монстроконструкцию с вектором (хотя учитывая обстоятельства, это еще по-божески )
Хотелось бы также узнать, какой метод предпочитают в современном игрострое - использовать Object, что сильно сокращает количество файлов .as либо классы зато с возможностью автокомплита и дальнейшей настройки? Последний раз редактировалось Psijic; 26.08.2013 в 17:36. |
|
|||||
Регистрация: Aug 2012
Сообщений: 108
|
Вспомнил, что в Delphi, да вроде и в C++ были перечисляемые типы данных. Вот они бы пригодились, а то сейчас все делается через лишние константы. Запаришься. Тут чел статейку про паттерн enum из джавы переложил на as3. Но че-то много кода лишнего получается http://habrahabr.ru/post/38978/. На джаве вроде определение enum справляется.
Последний раз редактировалось Psijic; 04.09.2013 в 01:48. |
|
|||||
Цитата:
Если типы и количество данных известны заранее, и известно что это за данные, то я предпочитаю сделать отдельный класс, с заранее указанными полями. В общем, какой подход удобнее, такой и используется |
|
|||||
Регистрация: Aug 2012
Сообщений: 108
|
Новая подтема: сейчас модно делать спрайт-листы и внедрять их в код [Embed]. Однако, на каждый спрайт-лист нужно несколько переменных. А если у меня 20-30-100 спрайт-листов? Конечно, это уже бред, но как оптимизировать ситуацию? Ведь надо их хранить в памяти, чтобы не создавать заново, а переиспользовать. И как к ним обращаться? Или если я делаю stand-alone swf, не лучше ли запихать все в swc как спрайты? Хотя, это еще бредовее... Зато обращаться проще. Да и видел, кто-то на форуме по старлингу выкладывал кусок кода Г. Скиннера, где он в синглтоне хранил заэмбеденную графику, вроде тоже в тему.
Вот пока че-то шаманю согласно концепции Starling public static function getImageFromList(name:String, spriteList:String):Image { var texture:Texture = Texture.fromBitmap(new List()); var xml:XML = XML(new this[List + "XML"]()); var textureAtlas:TextureAtlas = new TextureAtlas(texture, xml); texture = textureAtlas.getTexture(name); return new Image(texture); } Последний раз редактировалось Psijic; 14.09.2013 в 12:58. |
|
|||||
Регистрация: Aug 2012
Сообщений: 108
|
Приветствую снова. Задался таким простым вопросом: надо разместить объекты на поле. Как описать структуру данных лучшим образом? Простой массив
не дает понимания о его содержимом. Собственный класс под структуру данных var grid: Vector.<CustomVO> = Vector.<CustomVO>([new CustomVO(1, 1, 5), new CustomVO(1, 3, 5)]); выглядит как что-то между первыми двумя вариантами. Вектор векторов типа тут надо подобрать правильный каст, текущий не прошел. |
|
|||||
Banned
[+1 06.12.14]
[+1 18.12.14] [+1 30.12.14] Регистрация: Aug 2014
Сообщений: 461
|
Из Вашего поста ничего не понятно, но последний код вряд ли рабочий. Попробуйте так -
|
|
|||||
Регистрация: Jan 2013
Сообщений: 322
|
Psijic, первый неюзабелен. второй юзать в долгосрочной перспективе, третий в краткосрочной. четвёртый юзать для скорости(хотя не факт), используй new <uint>[4, 6]
|
|
|||||
Регистрация: Aug 2012
Сообщений: 108
|
Цитата:
@nubideus Это вектором? Похоже на мой 4й вариант. Или я чего-то не понял, приведи полный пример. Есть еще 1 вариант - весьма оптимизированный для кода, но трудный для восприятия: 3 вектора uint Правда, в отличие от, например, того же MVC (сравнение взято потому что там тоже 3 различных класса для 1 объекта), я не представляю как это удобно можно хранить. Хотя, если сделать обертку-"фасад" в виде класса По-моему, уже что-то, можно попробовать. Еще бы добавить зависимость индексов между векторами Последний раз редактировалось Psijic; 13.08.2014 в 16:20. |
Часовой пояс GMT +4, время: 18:04. |
|
« Предыдущая тема | Следующая тема » |
Теги |
class , object |
|
|