源战役客户端
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

159 lines
4.4 KiB

ArrowComponent = ArrowComponent or BaseClass(BaseItem)
function ArrowComponent:__init(parent_wnd)
self.base_file = "common"
self.layout_file = "ArrowComponent"
self.arrowType = 1
self:Load()
end
function ArrowComponent:__delete()
self:StopAnim()
end
function ArrowComponent:Load_callback()
self.arrow = self:GetChild("Arrow")
self:InitEvent()
if self.need_refreshData then
self:ShowArrow(self.type, self.pos, self.layer, self.show_type)
end
end
function ArrowComponent:InitEvent()
end
function ArrowComponent:SetArrowType( arrowType )
self.arrowType = arrowType
if self.is_loaded then
self:SetArrowImg()
end
end
function ArrowComponent:SetArrowImg( )
if self.arrowType == 1 then
lua_resM:setImageSprite(self, self.arrow:GetComponent("Image"), "mainui_asset", "main_ui_tip", true)
elseif self.arrowType == 2 then
lua_resM:setImageSprite(self, self.arrow:GetComponent("Image"), "mainui_asset", "main_ui_tip2", true)
--lua_resM:setImageSprite(self, self.arrow:GetComponent("Image"), "mainui_asset", "main_ui_tip2", true)
elseif self.arrowType == 3 then
lua_resM:setImageSprite(self, self.arrow:GetComponent("Image"), "mainui_asset", "main_ui_tip", true)
--lua_resM:setImageSprite(self, self.arrow:GetComponent("Image"), "mainui_asset", "main_ui_tip3", true)
end
end
--type --显示箭头 1 右 2 左 3 下 4 上 5左斜下 6右斜下 7左斜上 8右斜上
function ArrowComponent:ShowArrow(itype, pos, layer, show_type)
self.type = itype
self.pos = pos
self.layer = layer
self.show_type = show_type
if self.is_loaded then
self.need_refreshData = false
if self.type == 1 then
self.arrow.localRotation = Quaternion.Euler(0,0,0)
elseif self.type == 2 then
self.arrow.localRotation = Quaternion.Euler(0,0,180)
elseif self.type == 3 then
self.arrow.localRotation = Quaternion.Euler(0,0,270)
elseif self.type == 4 then
self.arrow.localRotation = Quaternion.Euler(0,0,90)
elseif self.type == 5 then
self.arrow.localRotation = Quaternion.Euler(0,0,225)
elseif self.type == 6 then
self.arrow.localRotation = Quaternion.Euler(0,0,325)
elseif self.type == 7 then
self.arrow.localRotation = Quaternion.Euler(0,0,135)
elseif self.type == 8 then
self.arrow.localRotation = Quaternion.Euler(0,0,45)
else
self.arrow.localRotation = Quaternion.Euler(0,0,0)
end
self:SetArrowImg()
self:SetPosition(self.pos.x,self.pos.y)
self:SetLayer(self.layer)
self:StopAnim()
self:StartAnim()
else
self.need_refreshData = true
end
end
function ArrowComponent:GetAnimEndPos(i_type)
local pos = Vector3(0,0,0)
if self.arrowType == 2 then
if i_type == 1 or i_type == 2 then
pos = Vector3(-10, 0, 0 )
elseif i_type == 3 or i_type == 4 then
pos = Vector3(0, -10 ,0)
elseif i_type == 5 or i_type == 8 then
pos = Vector3(-10, -10, 0)
elseif i_type == 6 or i_type == 7 then
pos = Vector3(-10, 10, 0)
end
else
if i_type == 1 or i_type == 2 then
pos = Vector3(-15, 0, 0 )
elseif i_type == 3 or i_type == 4 then
pos = Vector3(0, -15 ,0)
elseif i_type == 5 or i_type == 8 then
pos = Vector3(-15, -15, 0)
elseif i_type == 6 or i_type == 7 then
pos = Vector3(-15, 15, 0)
end
end
return pos
end
function ArrowComponent:StartAnim()
self:SetVisible(true)
self.arrow.localPosition = Vector3(0,0,0)
if self.twenn_id == nil then
local function onCompleted()
self:ArrowAnimation()
end
self.tween_id = TweenLite.to(self, self.arrow,TweenLite.UiAnimationType.POS, self:GetAnimEndPos(self.type) ,0.6,onCompleted,TweenFunc.EASE_IN_OUT)
end
end
function ArrowComponent:ArrowAnimation()
local call_fun = function ()
local function onCompleted()
self:ArrowAnimation()
end
self.tween_id3 =TweenLite.to(self, self.arrow,TweenLite.UiAnimationType.POS, self:GetAnimEndPos(self.type) ,0.6,onCompleted,TweenFunc.EASE_IN_OUT)
end
self.tween_id2 =TweenLite.to(self, self.arrow,TweenLite.UiAnimationType.POS,self:GetAnimEndPos(), 0.6, call_fun, TweenFunc.EASE_IN_OUT)
end
function ArrowComponent:StopAnim()
if self.tween_id then
TweenLite.Stop(self.tween_id)
self.tween_id = nil
end
if self.tween_id2 then
TweenLite.Stop(self.tween_id2)
self.tween_id2 = nil
end
if self.tween_id3 then
TweenLite.Stop(self.tween_id3)
self.tween_id3 = nil
end
end
function ArrowComponent:Hide()
self:SetVisible(false)
self:StopAnim()
end
function ArrowComponent:SetLayer(layer)
if self.transform and layer then
--self.transform.gameObject:GetComponent("Canvas").sortingOrder = layer
end
end