lua链表运用-cocos-lua创建连线图(UI笔记)

根据坐标链表 生成连线图

简述:项目中需要生成一个连线图,使用链表储存连线所需的点,再根据相连的下个点,进行精灵的缩放与调整角度。

--点之间的连线 使用九宫格精灵
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

lua链表运用-cocos-lua创建连线图(UI笔记)_第1张图片

你可能感兴趣的:(游戏框架探索)