Toggle navigation
Toggle navigation
This project
Loading...
Sign in
Hooke
/
lls_program
Go to a project
Toggle navigation
Toggle navigation pinning
Projects
Groups
Snippets
Help
Project
Activity
Repository
Pipelines
Graphs
Issues
0
Merge Requests
0
Wiki
Snippets
Network
Create a new issue
Builds
Commits
Issue Boards
Authored by
hookehuyr
2025-10-28 17:55:31 +0800
Browse Files
Options
Browse Files
Download
Email Patches
Plain Diff
Commit
04d96c3c4d95a4fec403a4f7374c79a5175b5186
04d96c3c
1 parent
b54c0e10
feat(弹幕组件): 优化顺序弹幕发送逻辑以支持多轨道同时填充
重构顺序弹幕发送逻辑,改为根据可用轨道数量同时填充弹幕 移除弹幕点击时的Toast提示以简化交互
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
45 additions
and
11 deletions
src/components/NativeDanmuComponent.vue
src/components/NativeDanmuComponent.vue
View file @
04d96c3
...
...
@@ -390,14 +390,48 @@ const initFullScreenDanmus = () => {
// 当前弹幕索引,用于顺序显示
let currentDanmuIndex = 0
// 发送顺序弹幕
// 发送顺序弹幕
- 根据可用轨道数量同时填充弹幕
const sendSequentialDanmu = () => {
// 按顺序获取弹幕数据
const danmuData = familyDanmus.value[currentDanmuIndex % familyDanmus.value.length]
sendDanmu(danmuData)
// 获取所有可用的轨道
const availableTracks = tracks.filter(track => checkTrackSpace(track))
if (availableTracks.length === 0) {
return // 没有可用轨道,直接返回
}
// 为每个可用轨道同时发送一个弹幕
availableTracks.forEach(track => {
// 按顺序获取弹幕数据
const danmuData = familyDanmus.value[currentDanmuIndex % familyDanmus.value.length]
// 发送弹幕到指定轨道
sendDanmuToTrack(danmuData, track)
// 更新索引,循环使用
currentDanmuIndex++
})
}
// 发送弹幕到指定轨道
const sendDanmuToTrack = (danmuData, track) => {
const danmu = {
id: `danmu-${++danmuId.value}-${Date.now()}-${Math.random()}`,
data: danmuData,
x: 750, // 从右侧开始
duration: 0,
isMoving: false,
opacity: 1,
startTime: Date.now()
}
// 添加到轨道
track.danmus.push(danmu)
track.lastDanmuTime = Date.now()
// 更新索引,循环使用
currentDanmuIndex++
// 启动动画
nextTick(() => {
startDanmuAnimation(danmu, track)
})
}
// 自动发送弹幕
...
...
@@ -472,11 +506,11 @@ const clearDanmu = () => {
const handleDanmuClick = (danmu) => {
emit('danmu-click', danmu.data)
Taro.showToast({
title: `点击了${danmu.data.familyName}`,
icon: 'none',
duration: 2000
})
//
Taro.showToast({
//
title: `点击了${danmu.data.familyName}`,
//
icon: 'none',
//
duration: 2000
//
})
}
// 暴露方法给父组件
...
...
Please
register
or
login
to post a comment