根据坐标链表 生成连线图
简述:项目中需要生成一个连线图,使用链表储存连线所需的点,再根据相连的下个点,进行精灵的缩放与调整角度。
--点之间的连线 使用九宫格精灵
function BattleFuwenView:CreateLinkLineView(parent)
local view = XUI.CreateLayout(0, 0, 0, 0)
parent:addChild(view, 2)
local LINE_HEGIHT = 17
--传入头节点 递归创建
function view.UpdateLinkLine(Node)
if nil == Node.next_ then return end
if nil == Node.sprite then
--九宫格控件
Node.sprite = XUI.CreateImageViewScale9(Node.x + 63, Node.y + 50, 10, LINE_HEGIHT, ResPath.GetZhanwen("img9_contact"), true)
end
--位置大小角度 调整
Node.sprite:setAnchorPoint(0, 0)
Node.sprite:setContentSize(cc.size(GameMath.GetDistance(Node.x, Node.y, Node.next_.x, Node.next_.y, true), LINE_HEGIHT))
Node.sprite:setRotation(GameMath.DirAngle(cc.p(Node.x, Node.y), cc.p(Node.next_.x, Node.next_.y)))
view:addChild(Node.sprite, 2)
view.UpdateLinkLine(Node.next_)
end
return view
end
--创建链表数据 存储坐标;序号;下一个节点
function BattleFuwenView:CreatLIneData(max_slot)
local line_list = {}
--连线头结点
line_list.head_node = {
idx = 1,
x = 0,
y = 0,
next_ = nil,
}
local function PushList(list, node)
if nil == list.ceil_node then
node.idx = 2
list.head_node.next_ = node
list.ceil_node = list.head_node.next_
else
node.idx = list.ceil_node.idx + 1
list.ceil_node.next_ = node
list.ceil_node = list.ceil_node.next_
end
end
return line_list
end