此刻头像扩到 45 张,上方 8 个和下方滚动动态分两个不重叠的池 (v26101005)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
28
js/app.js
28
js/app.js
@@ -3,7 +3,7 @@
|
||||
(function () {
|
||||
'use strict';
|
||||
/* 页面版本号(YYMMDD+序号):显示在「关于兜爸心选」页底部;bump 时同步 head 注释与 ?v= */
|
||||
var VER = '26101004';
|
||||
var VER = '26101005';
|
||||
const $ = (s, c) => (c || document).querySelector(s);
|
||||
const $$ = (s, c) => Array.from((c || document).querySelectorAll(s));
|
||||
|
||||
@@ -3513,14 +3513,15 @@
|
||||
function pulseIco(k, cls) {
|
||||
return '<span class="' + cls + '">' + (PULSE_ICO[k] || PULSE_ICO.box) + '</span>';
|
||||
}
|
||||
/* 「此刻」头像(2026-10-10 用户:「换成真实人物的,不要卡通」;同日二改:「别都用妈妈的大头贴,
|
||||
再换一些风景穿插着来,也可以放一部分小孩的、小宝宝的」)→ 26 张写实照片:妈妈 12(m*)、宝宝 6(k*)、风景 8(s*),
|
||||
按「妈妈为主、宝宝和风景穿插」排好,按 seed 取模。全部是 AI 生成的虚构画面,不对应任何真实用户、不是真人照片;
|
||||
96×96 JPG,共约 70KB,懒加载。原 SVG 卡通头像见 git 历史 v26101001。 */
|
||||
const MOM_AVA = ['m01', 'k01', 'm02', 's01', 'm03', 's02', 'm04', 'k02', 'm05', 's03', 'm06', 'k03', 'm07', 's04', 'm08', 's05', 'm09', 'k04', 'm10', 's06', 'm11', 'k05', 'm12', 's07', 's08', 'k06'];
|
||||
function momAva(seed) {
|
||||
return '<img src="assets/img/mom/' + MOM_AVA[Math.abs(seed | 0) % MOM_AVA.length] + '.jpg" alt="" loading="lazy" decoding="async" width="48" height="48">';
|
||||
}
|
||||
/* 「此刻」头像(2026-10-10 用户:「换成真实人物的,不要卡通」→ 同日二改:妈妈、宝宝、风景穿插 →
|
||||
同日三改:「上面那 8 个和下面一直轮换的头像不要有重叠,多准备一些」)。
|
||||
45 张 AI 生成的写实照片(妈妈 m* / 宝宝 k* / 风景 s*),拆成两个**不相交**的池:
|
||||
· AVA_TOP 16 张 → 上面叠着的 8 个(按孕周取连续 8 张,组内不重复);
|
||||
· AVA_FEED 29 张 → 下面滚动动态,按行序依次取(一轮动态最多 20 条 < 29,不会撞)。
|
||||
全部是 AI 虚构画面,不对应任何真实用户;96×96 JPG,懒加载。原 SVG 卡通头像见 git 历史 v26101001。 */
|
||||
const AVA_TOP = ['m01', 'k01', 'm02', 's02', 'm03', 'k04', 'm04', 's05', 'm05', 'k06', 'm06', 's09', 'm07', 'k10', 'm08', 's10'];
|
||||
const AVA_FEED = ['m09', 'k02', 's01', 'm10', 'k03', 's03', 'm11', 'k05', 's04', 'm12', 'k07', 's06', 'm13', 'k08', 's07', 'm14', 'k09', 's08', 'm15', 'k11', 'm16', 'k12', 'm17', 'k13', 'm18', 'm19', 'm20', 'm21', 'm22'];
|
||||
const avaImg = n => '<img src="assets/img/mom/' + n + '.jpg" alt="" loading="lazy" decoding="async" width="48" height="48">';
|
||||
const strSeed = t => { let x = 7; for (let i = 0; i < t.length; i++) x = (x * 31 + t.charCodeAt(i)) | 0; return Math.abs(x); };
|
||||
/* 「此刻」重绘钩子:足迹 / 档案 / 盲盒状态回来时调用(它们决定「和你比」「今日待办」和孕周) */
|
||||
let plHook = null;
|
||||
@@ -4092,7 +4093,7 @@
|
||||
const t = String(f.text || ''), i = t.indexOf('的妈妈 ');
|
||||
const who = peerMode ? '同孕周妈妈' : (i > 0 ? t.slice(0, i + 3) : '一位妈妈'), what = i > 0 ? t.slice(i + 4) : t;
|
||||
const go = f.act && TODAY_GO[f.act] ? ' data-go="' + esc(f.act) + '"' : '';
|
||||
return '<div class="pl-row' + (go ? ' is-go' : '') + '"' + go + '><span class="pr-ava">' + momAva(strSeed(t + (f.ago || ''))) + '</span>' +
|
||||
return '<div class="pl-row' + (go ? ' is-go' : '') + '"' + go + '><span class="pr-ava">' + avaImg(AVA_FEED[(f._ava || 0) % AVA_FEED.length]) + '</span>' +
|
||||
/* 同周版标题已经说了「和你同一周」,行里不再重复「同孕周妈妈」,省出地方给动作。
|
||||
不显示「N 分钟前」:三行按工具错开排(见 paint),时间会前后颠倒,又不能改接口给的时间 */
|
||||
(peerMode ? '' : '<span class="pr-who">' + esc(who) + '</span>') + '<span class="pr-do">' +
|
||||
@@ -4122,7 +4123,9 @@
|
||||
if (avs.dataset.seed === String(seed)) return;
|
||||
avs.dataset.seed = seed;
|
||||
/* 2026-10-02 用户:「头像现在展示 3 个,给我展示 6 到 8 个」→ 7 个 */
|
||||
avs.innerHTML = [3, 10, 7, 0, 5, 9, 1].map(x => '<i>' + momAva(x + seed) + '</i>').join(''); // 7 个按 26 取模互不相同,叠在一起不重复
|
||||
/* 2026-10-10 用户说「那 8 个」→ 8 个。按孕周轮换起点连续取 8 张:16 张的池子组内必不重复,也不和下面动态共用 */
|
||||
const st = (Math.abs(seed | 0) * 8) % AVA_TOP.length;
|
||||
avs.innerHTML = Array.from({ length: 8 }, (_, k) => '<i>' + avaImg(AVA_TOP[(st + k) % AVA_TOP.length]) + '</i>').join('');
|
||||
}
|
||||
function paintPeer(p) {
|
||||
paintAvs(p.week);
|
||||
@@ -4179,6 +4182,9 @@
|
||||
const k = pool.findIndex(x => recent.indexOf(x.act) < 0);
|
||||
mix.push(pool.splice(k < 0 ? 0 : k, 1)[0]);
|
||||
}
|
||||
/* 头像按行序依次分配(不再按文案哈希):相邻几行、同一轮里都不会出现同一张 */
|
||||
const a0 = strSeed(sig) % AVA_FEED.length;
|
||||
mix.forEach((x, k) => { x._ava = a0 + k; });
|
||||
feed = mix;
|
||||
fi = 0;
|
||||
const tr = $('#plTrack');
|
||||
|
||||
Reference in New Issue
Block a user