Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
F
fc-minigame
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
陈冲
fc-minigame
Commits
902e3273
Commit
902e3273
authored
Jun 12, 2026
by
董政锦
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
fix; 修复 game5 套中圈2种声音;
parent
75312720
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
20 additions
and
14 deletions
+20
-14
Game5.vue
frontend-h5/src/pages/game5/Game5.vue
+4
-3
PlayingView.vue
frontend-h5/src/pages/game5/views/PlayingView.vue
+16
-11
No files found.
frontend-h5/src/pages/game5/Game5.vue
View file @
902e3273
...
...
@@ -241,7 +241,8 @@ const hitHandler = (score: number) => {
tick
.
value
+=
score
console
.
log
(
'[WebSocket] 圈中马!得分:'
,
score
,
'当前总分:'
,
tick
.
value
)
submitScore
()
playGame1Music
()
// console.log('[Audio] playGame1Music() 被调用 - 播放 game1.mp3 背景音乐')
// playGame1Music()
}
if
(
wechat
)
{
...
...
@@ -388,8 +389,8 @@ const rankCloseHandler = () => {
</
template
>
<LoadingView
v-if=
"currentView === 'loading'"
:image-urls=
"imageUrls"
:user-join-status=
"userJoinStatus"
@
touchGameRule=
"showGameRuleHandler"
/>
<!-- <PlayingView v-else :image-urls="imageUrls" :tick="tick" :rank="rank" -->
<PlayingView
v-else-if=
"currentView === 'playing'"
:image-urls=
"imageUrls"
:tick=
"tick"
:rank=
"rank"
<!-- <PlayingView v-else :image-urls="imageUrls" :tick="tick" :rank="rank" -->
<PlayingView
v-else-if=
"currentView === 'playing'"
:image-urls=
"imageUrls"
:tick=
"tick"
:rank=
"rank"
:current-gu=
"currentGu"
:countdown-interval=
"countdownInterval"
:is-div-desc-visible=
"isDivDescVisible"
@
hit=
"hitHandler"
/>
<!-- <ScoreView v-else :image-urls="imageUrls" :rank="rank" :tick="tick" /> -->
...
...
frontend-h5/src/pages/game5/views/PlayingView.vue
View file @
902e3273
...
...
@@ -39,13 +39,13 @@ const CIRCLE_THROW_MS = 1200 // 圈圈飞行时长
const
HIT_FADE_MS
=
400
// 被套中后马消失延迟
// ── 难度递增参数:随游戏时间从 0→60s 指数曲线变化 ──
const
HORSE_SPEED_MIN
=
80
// px/s 初始速度
const
HORSE_SPEED_MAX
=
2
00
// px/s 最大速度(60s 时,7倍提升
)
const
SPAWN_MIN_START
=
3000
// ms 初始最短生成间隔
const
SPAWN_MIN_END
=
800
// ms 最终最短生成间隔
const
SPAWN_MAX_START
=
6000
// ms 初始最长生成间隔
const
SPAWN_MAX_END
=
1
800
// ms 最终最长生成间隔
const
MAX_HORSES_ON_SCREEN
=
8
// 场上最多马匹数
const
HORSE_SPEED_MIN
=
120
// px/s 初始速度(加快)
const
HORSE_SPEED_MAX
=
2
50
// px/s 最大速度(提升上限
)
const
SPAWN_MIN_START
=
1500
// ms 初始最短生成间隔(缩短)
const
SPAWN_MIN_END
=
500
// ms 最终最短生成间隔(缩短)
const
SPAWN_MAX_START
=
3000
// ms 初始最长生成间隔(缩短)
const
SPAWN_MAX_END
=
1
000
// ms 最终最长生成间隔(缩短)
const
MAX_HORSES_ON_SCREEN
=
10
// 场上最多马匹数(增加)
// 马动画帧率控制(参考 Rank1View:每 N 个 raf tick 切一帧 → ~20fps)
const
HORSE_FRAME_TICK
=
3
...
...
@@ -125,6 +125,7 @@ function getAudioContext(): AudioContext {
/** 丢圈"咻"声 — 短促上升频率扫频 */
function
playThrowSound
()
{
console
.
log
(
'[Audio] playThrowSound - 丢圈音效'
)
try
{
const
ctx
=
getAudioContext
()
const
now
=
ctx
.
currentTime
...
...
@@ -140,11 +141,13 @@ function playThrowSound() {
gain
.
gain
.
exponentialRampToValueAtTime
(
0.01
,
now
+
0.2
)
osc
.
start
(
now
)
osc
.
stop
(
now
+
0.2
)
}
catch
{
/* ignore audio errors */
}
console
.
log
(
'[Audio] playThrowSound - 音效开始播放, 持续0.2s'
)
}
catch
(
e
)
{
console
.
error
(
'[Audio] playThrowSound error'
,
e
);
}
}
/** 套中"叮"声 — 两个简短的上升音 */
function
playHitSound
()
{
console
.
log
(
'[Audio] playHitSound - 套中马音效(叮声)'
)
try
{
const
ctx
=
getAudioContext
()
const
now
=
ctx
.
currentTime
...
...
@@ -159,6 +162,7 @@ function playHitSound() {
g1
.
gain
.
exponentialRampToValueAtTime
(
0.01
,
now
+
0.25
)
o1
.
start
(
now
)
o1
.
stop
(
now
+
0.25
)
console
.
log
(
'[Audio] playHitSound - 第一音 880Hz 开始, 持续0.25s'
)
// 第二音 1320 Hz 延时 0.08s
const
o2
=
ctx
.
createOscillator
()
const
g2
=
ctx
.
createGain
()
...
...
@@ -170,7 +174,8 @@ function playHitSound() {
g2
.
gain
.
exponentialRampToValueAtTime
(
0.01
,
now
+
0.35
)
o2
.
start
(
now
+
0.08
)
o2
.
stop
(
now
+
0.35
)
}
catch
{
/* ignore audio errors */
}
console
.
log
(
'[Audio] playHitSound - 第二音 1320Hz 开始, 持续0.35s (延时0.08s)'
)
}
catch
(
e
)
{
console
.
error
(
'[Audio] playHitSound error'
,
e
);
}
}
// ── 清理全部音效(组件卸载时) ──
...
...
@@ -358,8 +363,8 @@ onMounted(() => {
// MobileStage 已完成 3-2-1,游戏直接开始
prevTs
=
performance
.
now
()
spawnHorse
()
setTimeout
(
spawnHorse
,
800
)
setTimeout
(
spawnHorse
,
1600
)
setTimeout
(
spawnHorse
,
300
)
// 更早生成第二匹马
setTimeout
(
spawnHorse
,
600
)
// 更早生成第三匹马
raf
=
requestAnimationFrame
(
loop
)
})
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment