В этой небольшой статье я расскажу о создании и использовании классов в 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()
Вот и всё :)
Комментариев нет:
Отправить комментарий