Тема: Type
Показать сообщение отдельно
Старый 04.07.2015, 15:35   #5
Gector
Легенда
 
Аватар для Gector
 
Регистрация: 14.10.2007
Сообщений: 3,878
Написано 2,012 полезных сообщений
(для 5,072 пользователей)
Ответ: Type

Смари. Так ты прописываешь тип (например Enemy):
Type Enemy
    Field Name$
    Field Mesh
End Type
Первой строчкой создаешь тип с названием Enemy. Следующие две определяют поля типа ($ - строковый тип данных). Поля - это переменные типа. Грубо говоря описание, которое будет повторяться при создании экземпляра типа.

Чтобы создать экземпляр типа:
E.Enemy = new Enemy
E - переменная для хранения нового объекта (название от балды).
.Enemy - название существующего типа после точки, говорит, что в этой переменной будет храниться экземпляр типа.
new - без этого ключевого слова ты получишь ошибку, т.к. компилятор будет искать переменную Enemy хранящю тип Enemy. Этой строкой ты создаешь новый экземпляр типа.
Можно так же присвоить переменной экземпляр уже существующий.
E.Enemy = new Enemy
E2.Enemy = E
Здесь мы тупо присвоили этой переменной экземпляр. Таким образом две переменные ссылаются теперь на один экземпляр типа (созданный в первой строчке).


Мы создали выше объект типа. Теперь можно обратиться к его полям:
E\Name = "Monster"
E\Mesh = LoadMesh("Monster.b3d")
Обращение к переменным дает возможность задать значение прописанных параметров.

Теперь как пройтись по всем экземплярам типа:
For E.Enemy = Each Enemy
    E\Name = "blah blah blah"
    E\Mesh = LoadMesh("Monster2.b3d")
Next
Советую думать типах как о пользовательском типе данных. То есть так же как float, int, string и т.п. являются типами данных, так же и Type определяет пользовательский тип данных. Наглядно это можно проследить в синтаксисе. Например:
myFloat#
myFloat.MyFloatType
Точно так же как ты указываешь тип данных через символ "#", ты указываешь свой тип данных .MyFloatType.

Так же и функции:
myFloatFunction#()
myFloatFunction.MyFloatType()
Имхо. Однако советую сразу отбросить все иллюзии на счет их офигительного удобства.
(Offline)
 
Ответить с цитированием