В этой небольшой статье я расскажу о создании и использовании классов в Lua при помощи стандартной библиотеки "classlib.lua".
dofile(GetResPath('Scripts\\classlib.lua'))
-- GetResPath() - C++ функция, возвращающая путь к ресурсам движка
C_Sprite = class("C_Sprite") -- так объявляется класс
function C_Sprite:__init(Name,Texture,PosX,PosY,Left,Top,Width,Height) -- Функция инициализации
--Через self. задаются переменные класса
self.Name = Name
self.Texture = Texture
self.Pos = {x=PosX,y=PosY}
self.StartPos = {x=PosX,y=PosY}
self.Size = {Left=Left,Top=Top,Width=Width,Height=Height}
self.Scale = {x=1, y=1}
self.Alpha = 255
Sprite_Add(Name,Texture,PosX,PosY,Left,Top,Width,Height) -- С++ функция, добавляющая спрайт в массив спрайтов
end
function C_Sprite:Sync()
-- Синхронизация данных класса с данными движка
Sprite_MoveTo(self.Name,self.Pos.x,self.Pos.y)
Sprite_SetScale(self.Name,self.Scale.x,self.Scale.y)
Sprite_SetAlpha(self.Name,self.Alpha)
end
function C_Sprite:Draw()
Sprite_Draw(self.Name)
end
-- Теперь чтобы создать объект класса достаточно прописать следующее
SpriteObject = C_Sprite("TestSprite","TestTexture",512,384,100,100,100,100)
--Обращение к свойству класса
SpriteObject.Pos.x = 10
--Вызов функции класса
SpriteObject:Sync()Далее я расскажу о наследовании классов. Делается это довольно просто. Допустим у нас есть класс, наследуемый от класса C_Sprite. Объявляется он так:
class.C_GoalObject(shared(C_Sprite))
Инициализация происходит, как и у обычного класса, только нужно добавить следующую строку:
self.C_Sprite:__init(Name,Texture,PosX,PosY,Left,Top,Width,Height)
Обращение к переменным и вызов функций наследуемого класса:
self.C_Sprite.Pos.x = 10 self.C_Sprite:Sync()
Вот и всё :)
Комментариев нет:
Отправить комментарий