|
|
- --正方形cd 30 * 30
- SquareCdView = SquareCdView or BaseClass(BaseComponent)
- local SquareCdView = SquareCdView
- local math_ceil = math.ceil
- local string_format = string.format
- function SquareCdView:__init(handle_wnd, callback, id, width, height, font_size)
- self:InitData(callback, id, width, height, font_size)
- self:CreateGameObject(UIType.SquareCd)
- end
- function SquareCdView:InitData(callback, id, width, height, font_size)
- self.callback = callback
- self.id = id
- self.width = width or 30
- self.height = height or 30
- self.font_size = font_size
- end
-
- function SquareCdView:LoadSuccess()
- self.mask = self:GetChild("mask"):GetComponent("Image")
- self.cdTimeText = self:GetChild("cdTimeText"):GetComponent("Text")
- SetSizeDelta(self:GetChild("mask"), self.width,self.height)
- -- self:GetChild("mask").sizeDelta = Vector2(self.width,self.height)
- self:InitEvent()
- self:Show(0, 0, false)
- end
-
- function SquareCdView:InitEvent()
-
- end
-
- function SquareCdView:__defineVar()
- return {
- _class_type = self,
- --_cid = self._id,
- _iid = _in_obj_ins_id,
- _use_delete_method = false,
- id = nil,
- width = nil,
- height = nil,
- font_size = nil,
- callback = nil,
- all_time = 0,
- last_time = 0,
- curr_show_time = 0,
- is_public_cd = false,
- is_dead = false,
- is_playing = false,
- is_pause = false,
- show_text = false,
- show_type = nil,
- }
- end
- function SquareCdView:IsPlaying()
- return self.is_playing
- end
-
- function SquareCdView:Show(all_time, last_time, show_text, show_type, fillClockwise)
- self:RemoveTimer()
- self.all_time = all_time
- self.last_time = last_time or 0
- self.curr_show_time = 0
- self.show_text = show_text
- self.show_type = show_type or 1
- if self.all_time == 0 or self.last_time >= self.all_time then
- self.cdTimeText.text = ""
- self.mask.fillAmount = 0
- return
- end
- local cur_percent = self.last_time / self.all_time
- if self.show_type == 2 then
- cur_percent = 1 - self.last_time / self.all_time
- end
- self.mask.fillAmount = cur_percent
- if fillClockwise ~= nil then
- self.mask.fillClockwise = fillClockwise
- end
- if show_text ~= false then
- local left_time = self.all_time - self.last_time - self.curr_show_time
- if left_time > 1 then
- self.cdTimeText.text = math_ceil(left_time)
- else
- self.cdTimeText.text = string_format("%.1f", left_time)
- end
- end
- self:AddTimer()
- end
-
-
- function SquareCdView:AddTimer()
- Runner.Instance:AddRunObj(self, 3)
- self.is_playing = true
- end
-
- function SquareCdView:RemoveTimer()
- Runner.Instance:RemoveRunObj(self)
- self.is_playing = false
- end
-
- --暂停cd
- function SquareCdView:PauseCD()
- self.is_pause = true
- end
-
- function SquareCdView:ContinueCD()
- self.is_pause = false
- end
-
- function SquareCdView:Update(now_time, elapse_time)
- if self.is_pause then return end
- self.curr_show_time = elapse_time + self.curr_show_time
- local cur_percent = (self.last_time + self.curr_show_time) / self.all_time
- if self.show_type == 2 then
- cur_percent = 1 - (self.last_time + self.curr_show_time) / self.all_time
- end
- if cur_percent <= 0 then
- cur_percent = 0
- self:RemoveTimer()
- self.cdTimeText.text = ""
- self.mask.fillAmount = 0
-
- if self.callback then
- self.callback()
- end
- return
- end
-
- if not self.is_base_skill then
- self.mask.fillAmount = cur_percent
- if self.show_text ~= false then
- local left_time = self.all_time - self.last_time - self.curr_show_time
- if left_time > 1 then
- self.cdTimeText.text = math_ceil(left_time)
- else
- self.cdTimeText.text = string_format("%.1f", left_time)
- end
- end
- end
- end
- function SquareCdView:__delete( )
- self:RemoveTimer()
-
- end
|