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

这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值