|
-
- local Component = class("Component")
-
- function Component:ctor(name)
- self.name_ = name
- end
-
- function Component:getName()
- return self.name_
- end
-
- function Component:getTarget()
- return self.target_
- end
-
- function Component:exportMethods_(methods)
- self.exportedMethods_ = methods
- local target = self.target_
- local name = self.name_
- local com = self
- for _, key in ipairs(methods) do
- if not target[key] then
- target[key] = function(__, ...)
- local r = {com[key](self, ...)}
- if r[1] == self then r[1] = target end
- return unpack(r)
- end
- end
- end
- return self
- end
-
- function Component:bind_(target)
- if self.target_ then
- return;
- end
- self.target_ = target
- self:onActivate(target)
- end
-
- function Component:unbind_()
- if self.target_ == nil then
- return;
- end
- if self.exportedMethods_ then
- local target = self.target_
- for _, key in ipairs(self.exportedMethods_) do
- target[key] = nil
- end
- end
- self:onDeactivate()
- self.target_ = nil;
- end
-
- function Component:onActivate()
- end
-
- function Component:onDeactivate()
- end
-
- return Component
|