StarLineItem = StarLineItem or BaseClass(BaseItem) function StarLineItem:__init() self.base_file = "starMap" self.layout_file = "StarLineItem" self.data = nil self.is_delay_callback = true self.model = StarMapModel:getInstance() self:Load() end function StarLineItem:Load_callback() self.checkmark = self:GetChild("checkmark"):GetComponent("ImageExtend") if self.need_refreshData then self:SetData(self.data) end if self.need_setLight then self:SetLight(self.is_light) end end function StarLineItem:SetData(data) if data == nil then return end self.data = data if self.is_loaded then local pos1 = self.model:GetPointPos(data.star_map_id) local pos2 = self.model:GetPointPos(data.star_map_id+1) if pos1 == nil or pos2 == nil then return end local pos_x = math.floor((pos1.x + pos2.x)/2) local pos_y = math.floor((pos1.y + pos2.y)/2) local length = math.floor(GameMath.GetDistance(pos1.x,pos1.y,pos2.x,pos2.y,true)) local angle = math.atan((pos2.y-pos1.y)/(pos2.x-pos1.x))*180/math.pi self.transform.sizeDelta = Vector2(length,14) --self.checkmark.transform.sizeDelta = Vector2(length,4) self:SetPosition(pos_x,pos_y) self:SetRotation(0,0,angle) self.need_refreshData = false else self.need_refreshData = true end end function StarLineItem:SetLight(bool) self.is_light = bool if self.is_loaded then self.checkmark.gray = not bool self.need_setLight = false else self.need_setLight = true end end function StarLineItem:__delete() end