v26110455 宝宝只小脚踢、每 10~28 秒一下(小腿/小胳膊不再动)

This commit is contained in:
deploy
2026-11-05 07:49:01 +00:00
parent 102acc89bd
commit fc9f59ec48
26 changed files with 110 additions and 111 deletions

View File

@@ -3,7 +3,7 @@
(function () {
'use strict';
/* 页面版本号(YYMMDD+序号):显示在「关于兜爸心选」页底部;bump 时同步 head 注释与 ?v= */
var VER = '26110454';
var VER = '26110455';
const $ = (s, c) => (c || document).querySelector(s);
const $$ = (s, c) => Array.from((c || document).querySelectorAll(s));

View File

@@ -5,7 +5,7 @@
在静图上盖一张 WebGL 画布,同一张 PNG 原样画上去,只在「关节 → 手脚末端」这一小段做小角度旋转扭动,
脸周围是保护圈(权重强制为 0),头和身子一像素都不动。
· 每个阶段的关节位置手工标在 LIMBS 里(坐标 = 480×480 原图像素)。1、2 阶段是胚芽,没有手脚,不动。
· 节奏(10-12 起只在孕 20 周起):每隔 4~9 秒随机挑一处(小腿 / 小脚 / 小胳膊),用 1.8~2.8 秒缓缓抬起再放回;
· 节奏(11-05 起改为:只小脚踢,每 10~28 秒一下,见 plan())旧:(10-12 起只在孕 20 周起):每隔 4~9 秒随机挑一处(小腿 / 小脚 / 小胳膊),用 1.8~2.8 秒缓缓抬起再放回;
偶尔小腿和小脚一起「蹬」一下。角度只有 3~9 度。不动的时候不重画(不占电)。
· 跟 hero-fx.js 解耦:不改它,只盯 #heroStill 的 src / class —— 换阶段、淡入淡出都自动跟上。
· 没 WebGL / 系统「减少动态效果」→ 什么都不做,静图照常。
@@ -181,31 +181,30 @@
}
// 安排下一次「动一动」
/* 11-05 用户:「踢的动作都改成小脚踢,不要小腿、小胳膊动了,踢的时间改成每 10~28 秒间隔踢一下」
→ 只动小脚(没标小脚的那一阶段用小腿代替,等于它的脚);小腿、小胳膊不再单独动;间隔 10~28 秒随机。
音效、红心都跟着这一下小脚踢。LIMBS 里的 leg / arm 标注保留,以后要恢复把这里改回去即可。 */
function plan() {
clearTimeout(timer);
timer = setTimeout(() => {
if (ready && active() && cfg.l.length && (old() || DEBUG)) {
let i = Math.floor(Math.random() * cfg.l.length);
if (i === lastPick && cfg.l.length > 1) i = (i + 1) % cfg.l.length;
lastPick = i;
const now = performance.now(), l = cfg.l[i], dir = Math.random() < .5 ? -1 : 1;
const dur = 1800 + Math.random() * 1000, deg = l[5] * (.6 + Math.random() * .4) * (DEBUG ? 4 : 1);
moves.push({ i, t0: now, dur, amp: dir * deg * Math.PI / 180 });
// 小腿动时 4 成概率小脚也跟着轻轻翘一下(像蹬了一下),稍晚 0.3 秒起
const f = cfg.l.findIndex(x => x[6] === 'foot');
if (l[6] === 'leg' && f >= 0 && Math.random() < .4)
moves.push({ i: f, t0: now + 300, dur: dur - 200, amp: -dir * cfg.l[f][5] * .7 * (DEBUG ? 4 : 1) * Math.PI / 180 });
if (l[6] === 'leg' || l[6] === 'foot') {
kickSound(dur * .3);
let i = cfg.l.findIndex(x => x[6] === 'foot');
if (i < 0) i = cfg.l.findIndex(x => x[6] === 'leg');
if (i >= 0) {
const now = performance.now(), l = cfg.l[i], dir = Math.random() < .5 ? -1 : 1;
const dur = 1800 + Math.random() * 1000, deg = l[5] * (.6 + Math.random() * .4) * (DEBUG ? 4 : 1);
moves.push({ i, t0: now, dur, amp: dir * deg * Math.PI / 180 });
kickSound(dur * .3); // 踢到最快那一下时响(缓起缓落,约 3 成处)
kickUntil = now + dur + 800; // 踢的这段时间(+0.8 秒宽限)点脚弹红心
kickIdx = [i]; if (f >= 0 && f !== i && moves.some(m => m.i === f)) kickIdx.push(f);
} // 踢到最快那一下时响(缓起缓落,约 3 成处)
kick();
kickIdx = [i];
kick();
}
}
plan();
}, DEBUG ? 900 + Math.random() * 600 : 4000 + Math.random() * 5000);
}, DEBUG ? 900 + Math.random() * 600 : 10000 + Math.random() * 18000);
}
/* 11-05 用户:「当婴儿踢的时候,点击这个踢的位置,弹出一个实心的红心」
→ 小腿 / 小脚正在动(含动完后 0.8 秒宽限)时,点到那只脚附近(以末端为中心、原图 70px 半径,手指粗所以放宽)就在点的位置弹一颗实心红心:
放大弹出 → 往上飘 → 淡出,约 1 秒。小胳膊动、或没在踢的时候点,不弹。

View File

@@ -244,5 +244,5 @@
}
/* feed.js 首页默认不加载(index.html 只引了 topics.js),这里按需拉一次 */
if (window.GC_FEED) init();
else { var fs = document.createElement('script'); fs.src = 'guangchang/feed.js?v=26110454'; fs.onload = fs.onerror = init; document.body.appendChild(fs); }
else { var fs = document.createElement('script'); fs.src = 'guangchang/feed.js?v=26110455'; fs.onload = fs.onerror = init; document.body.appendChild(fs); }
})();

View File

@@ -6,9 +6,9 @@
(function () {
var sec = document.getElementById('gcHome');
if (!sec) return;
var l = document.createElement('link'); l.rel = 'stylesheet'; l.href = 'js/gch/v4.css?v=26110454';
var l = document.createElement('link'); l.rel = 'stylesheet'; l.href = 'js/gch/v4.css?v=26110455';
document.head.appendChild(l);
var s = document.createElement('script'); s.src = 'js/gch/v4.js?v=26110454';
var s = document.createElement('script'); s.src = 'js/gch/v4.js?v=26110455';
s.onload = function () { if (sec.querySelector('.g4-foot')) merge(); else sec.addEventListener('gc4-ready', merge, { once: true }); }; /* v4 要先拉 feed.js 才渲染 */
document.body.appendChild(s);

View File

@@ -9,7 +9,7 @@
if (/[?&]kit=0(?:&|$)/.test(location.search)) return;
var box = document.getElementById('kit'), sec = document.getElementById('kitHome');
if (!box || !sec) return;
var V = '26110454';
var V = '26110455';
var l = document.createElement('link'); l.rel = 'stylesheet'; l.href = 'js/kit.css?v=' + V; document.head.appendChild(l);
document.documentElement.classList.add('has-kit');

View File

@@ -8,7 +8,7 @@
postMessage 不是实时投递,微信在分享那一刻才派发,所以每次换内容都要再报一次;子页面没引 jweixin,这里按需加载。 */
(function (g) {
'use strict';
var V = '26110454';
var V = '26110455';
var isWx = /MicroMessenger/i.test(navigator.userAgent || '');
var waiting = [], loading = false;
function ready(cb) {