Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
P
paopao
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
图表
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
cocktail-party
paopao
Commits
154d8bdb
提交
154d8bdb
authored
3月 31, 2026
作者:
lidongxu
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
保存背景图版本
上级
5846f9cd
显示空白字符变更
内嵌
并排
正在显示
3 个修改的文件
包含
35 行增加
和
9 行删除
+35
-9
index.html
big-screen/index.html
+3
-1
main.js
big-screen/src/main.js
+15
-0
bubble.js
big-screen/src/renderer/bubble.js
+17
-8
没有找到文件。
big-screen/index.html
浏览文件 @
154d8bdb
...
...
@@ -10,7 +10,9 @@
width
:
100%
;
height
:
100%
;
overflow
:
hidden
;
background
:
#1a0a2e
;
background
:
linear-gradient
(
rgba
(
0
,
0
,
0
,
0.45
),
rgba
(
0
,
0
,
0
,
0.45
)),
url('http://link-promotion-dev.oss-cn-shanghai.aliyuncs.com/big_screen_back.png')
center
center
/
cover
no-repeat
;
}
#game-container
{
position
:
relative
;
...
...
big-screen/src/main.js
浏览文件 @
154d8bdb
...
...
@@ -18,6 +18,9 @@ const canvas = document.getElementById('game-canvas')
const
ctx
=
canvas
.
getContext
(
'2d'
)
const
SCREEN_NAME
=
import
.
meta
.
env
.
VITE_SCREEN_NAME
||
'big-screen-1'
const
GAME_BG_URL
=
'http://link-promotion-dev.oss-cn-shanghai.aliyuncs.com/back.png'
const
gameBgImg
=
new
Image
()
gameBgImg
.
src
=
GAME_BG_URL
/** 每个玩家独立的碎裂效果列表:Map<playerId, BubbleBurst[]> */
const
playerBursts
=
new
Map
()
...
...
@@ -37,6 +40,16 @@ function applyScaler(playerCount = 1) {
})
}
function
drawPlayerGameBackground
()
{
if
(
gameBgImg
.
complete
&&
gameBgImg
.
naturalWidth
>
0
)
{
ctx
.
drawImage
(
gameBgImg
,
0
,
0
,
SCREEN_WIDTH
,
SCREEN_HEIGHT
)
return
}
ctx
.
fillStyle
=
'#1a0a2e'
ctx
.
fillRect
(
0
,
0
,
SCREEN_WIDTH
,
SCREEN_HEIGHT
)
}
// ─── 单个玩家画面渲染 ──────────────────────────────────────────────────────────
function
renderPlayer
(
state
,
offsetX
,
roomId
)
{
...
...
@@ -55,6 +68,8 @@ function renderPlayer(state, offsetX, roomId) {
ctx
.
save
()
ctx
.
translate
(
offsetX
,
0
)
drawPlayerGameBackground
()
// 泡泡网格
if
(
state
.
grid
&&
state
.
grid
.
length
)
{
drawBubbleGrid
(
ctx
,
state
.
grid
,
state
.
pushAnimOffsetY
??
0
)
...
...
big-screen/src/renderer/bubble.js
浏览文件 @
154d8bdb
...
...
@@ -32,13 +32,22 @@ export function getGridOffsetX() { return GRID_OFFSET_X }
/**
* 9 种泡泡颜色(颜色索引 1-9),用于爆炸粒子效果取色。
* 排序与小程序端一致:按与鸡爪对比度从高到低排列。
* 当前统一顺序:
* 1 蓝
* 2 绿
* 3 奶白
* 4 紫
* 5 黄绿
* 6 黄
* 7 粉
* 8 橙
* 9 红
*/
export
const
BUBBLE_COLORS
=
[
''
,
'#
D8D0B0'
,
// 1 奶白
'#
2BC8E8'
,
// 2 蓝
'#
1DB85A'
,
// 3 绿
'#
2BC8E8'
,
// 1 蓝
'#
1DB85A'
,
// 2 绿
'#
D8D0B0'
,
// 3 奶白
'#8B35E0'
,
// 4 紫
'#80C020'
,
// 5 黄绿
'#E8C000'
,
// 6 黄
...
...
@@ -49,13 +58,13 @@ export const BUBBLE_COLORS = [
/**
* 精灵图 bubble.png(1400×1400)中每个球的裁剪区域
* 索引对应 colorIdx,映射到精灵图中正确的球
(与小程序端一致)
* 索引对应 colorIdx,映射到精灵图中正确的球
*/
const
SPRITE_REGIONS
=
[
null
,
[
1004
,
965
,
297
,
297
],
// 1 奶白 ← 精灵图位置9(右下
)
[
1004
,
562
,
297
,
296
],
// 2 蓝 ← 精灵图位置6(右
中)
[
581
,
562
,
297
,
296
],
// 3 绿 ← 精灵图位置5(中中
)
[
1004
,
562
,
297
,
296
],
// 1 蓝 ← 精灵图位置6(右中
)
[
581
,
562
,
297
,
296
],
// 2 绿 ← 精灵图位置5(中
中)
[
1004
,
965
,
297
,
297
],
// 3 奶白 ← 精灵图位置9(右下
)
[
159
,
965
,
296
,
297
],
// 4 紫 ← 精灵图位置7(左下)
[
159
,
562
,
296
,
296
],
// 5 黄绿 ← 精灵图位置4(左中)
[
1004
,
158
,
297
,
297
],
// 6 黄 ← 精灵图位置3(右上)
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论