|
|
- --进度条
-
- ProgressBarComponent = ProgressBarComponent or BaseClass(BaseComponent)
- function ProgressBarComponent:__init(parent, max_value, curr_value, width, height, ab_name, bg_img_name, front_img_name, rect_off, font_size, show_ani)
- self:InitData(max_value, curr_value, width, height, ab_name, bg_img_name, front_img_name, rect_off, font_size, show_ani)
- self:CreateGameObject(UIType.ProgressBar2)
- end
-
- function ProgressBarComponent:InitData(max_value, curr_value, width, height, ab_name, bg_img_name, front_img_name, rect_off, font_size, show_ani)
- self.max_value = max_value or 100 --最大值
- self.curr_value = curr_value or 1 --当前值
- self.width = width or 64 --背景图片宽度
- self.height = height or 10 --背景图片高度
- self.ab_name = ab_name or "uiComponent_asset"
- self.bg_img_name = bg_img_name --背景图片名字 统一放在uicomponent里
- self.front_img_name = front_img_name --前景图片名字
- self.rect_off = rect_off or {x = 2, y = 2}--前景与背景的偏移量
- self.font_size = font_size --字体大小 默认不显示
- self.show_ani = show_ani --是否显示动画
- end
-
- function ProgressBarComponent:LoadSuccess()
- self.bg_img = self.gameObject:GetComponent("Image")
- self.front_bg = self:GetChild("front_img")
- self.front_bg_img = self:GetChild("front_img"):GetComponent(typeof(UnityEngine.UI.Image))
- self.middle_bg_obj = self:GetChild("middle_img").gameObject
- self.middle_bg_img = self.middle_bg_obj:GetComponent(typeof(UnityEngine.UI.Image))
-
- if self.bg_img_name then
- lua_resM:setImageSprite(self, self.bg_img, self.ab_name, self.bg_img_name)
- lua_resM:setImageSprite(self, self.front_bg:GetComponent("Image"), self.ab_name, self.front_img_name)
- end
- SetSizeDelta(self.transform, self.width, self.height)
- self.front_bg.sizeDelta = Vector2(self.width - 2 * self.rect_off.x, self.height - self.rect_off.y * 2)
- -- self.front_bg.localPosition = Vector3(self.rect_off.x - self.width / 2, -self.rect_off.y + self.height / 2, 0)
- self.front_bg.anchoredPosition = Vector3(self.rect_off.x, -self.rect_off.y, 0)
- self.transform.localPosition = Vector3(3, 0, 0)
- self:SetValue()
- end
-
- function ProgressBarComponent:SetValue(value, max_value, show_ani)
- self.curr_value = value or self.curr_value or 0
- self.max_value = max_value or self.max_value or 100
- self.curr_value = math.min(self.curr_value, self.max_value)
-
- local rate = self.curr_value / self.max_value
- self.front_bg_img.fillAmount = rate
-
- if self.effectCon then
- local x = (self.front_bg.sizeDelta.x - 16) * rate + 8
- self.effectCon.localPosition = Vector2(x, 0)
- end
- if self.roleEmptyCon then
- self.roleEmptyCon.localPosition = Vector2(self.front_bg.sizeDelta.x * rate, 0)
- end
-
- if self.imageCon then
- self.imageCon.anchoredPosition = Vector2(self.front_bg.sizeDelta.x * rate + 59, -38)
- end
-
- local can_show_anim = show_ani or false
- if self.middle_bg_obj and self.middle_bg_obj.activeSelf ~= can_show_anim then
- self.middle_bg_obj:SetActive(can_show_anim)
- end
- if can_show_anim then
- if self.tween_hp_id then
- TweenLite.Stop(self.tween_hp_id)
- self.tween_hp_id = nil
- end
- self.tween_hp_id = TweenLite.to(self, self.middle_bg_img, TweenLite.UiAnimationType.FILLAMOUNT, rate, 0.45)
- end
- end
-
- function ProgressBarComponent:SetFrontImageStyle(front_img_name)
- self.front_img_name = front_img_name
- lua_resM:setImageSprite(self, self.front_bg:GetComponent("Image"), self.ab_name, self.front_img_name)
- end
-
- function ProgressBarComponent:__delete()
- --destroy(self.gameObject)
- end
-
- function ProgressBarComponent:GetImageCon()
- if not self.imageCon then
- self.imageCon = UiFactory.createChild(self.front_bg, UIType.Image3, "imageCon").transform
- self.imageCon.pivot = Vector2(1, 0)
- self.imageCon.anchorMin = Vector2(0, 1)
- self.imageCon.anchorMax = Vector2(0, 1)
- self.imageCon.anchoredPosition = Vector2(59, -38)
- end
- return self.imageCon
- end
|