交易行商品的历史成交价做成曲线图:近七日每日均价连线、成交量柱状叠加,买家看趋势决定出手时机。图表在客户端本地渲染,数据一次下发,滚动缩放全程零请求。
服务端下发七日均价数组,前端按坐标换算绘制折线,收盘价节点圆点标注。
SL:RegisterLuaNetMsg(9902, function(data)
local points = data.prices or {}
local maxV, minV = 0, math.huge
for _, v in ipairs(points) do
if v > maxV then maxV = v end
if v < minV then minV = v end
end
for i, v in ipairs(points) do
local y = chartBase - (v - minV) / (maxV - minV + 1) * chartHeight
GUI:setPosition(dotWidgets[i], chartLeft + (i - 1) * chartStep, y)
GUI:setVisible(dotWidgets[i], true)
end
end)
手指或鼠标悬停在节点上弹出数值气泡,显示当日均价与成交量,细节信息按需呈现。
for i, dot in ipairs(dotWidgets) do
GUI:addOnClickEvent(dot, function()
local rec = dayRecords[i]
if rec ~= nil then
GUI:setText(tipLabel, os.date("%m-%d", rec.ts) .. " 均价" .. rec.price .. " 成交" .. rec.cnt .. "笔")
GUI:setVisible(tipLabel, true)
end
end)
end
空数据、单点、满档三组边界样例的渲染核对;气泡在图表边缘的翻转显示验证。埋点图表的展开率与悬停率,展开率高而悬停低说明气泡入口不明显,调整触发热区。
maxV与minV相等时除零会让y值算出无穷大,分母加一的最小保护必须有。dotWidgets预分配十四个节点,数据点超量时截断而不是动态扩容,图表节点的动态创建成本高。dayRecords与points的索引要一一对应,服务端补齐缺失日的占位数据,断档曲线会误导趋势判断。气泡显示后不自动隐藏,下次悬停或离开图表区域时统一收起。
全站技术干货持续更新:996 引擎 / Lua 实战帖,语法、参数与示例一篇讲透。进入文章地图 · 查看全部 →
实战应用:用在哪里 装备回收商 NPC 每天按评分收购玩家的装备,裁决之杖、骨玉权杖按攻击、持久加权打分,榜上只要前五名。数…
实战应用:用在哪里 沙巴克攻城是全服行会战的最高舞台:攻方砸开城门、抢占皇宫,守方依托城墙与复活点反打。规则设计的关键是节奏…
实战应用:用在哪里 影分身玩法给法师职业补上生存短板:危急时刻召唤四个影分身分担仇恨,敌人需要在六格范围内分辨真身,猜错就浪…
实战应用:用在哪里 组队邀请、行会宣战这类关键信令丢了没有兜底,玩家只能反复手点,高峰期体验很差。重试机制给信令加确认回执:…
实战应用:用在哪里 新资料片上线首日预约量常是日常十倍,一口气全开会让数据库与登录网关同时过载。滚动开区把开区动作排成队列:…
实战应用:用在哪里 百人同屏的沙巴克外围战场,每个玩家每秒跑动会触发数次位置更新,全部即时下发时广播量随人数平方增长,网关先…