|
|
@@ -237,9 +237,6 @@ export const ChatBotPage = () => {
|
|
|
const stored = getStorage(STORAGE_KEYS.HAS_SHOWN_PROGRESS_BAR_TOOLTIP);
|
|
|
return stored === 'true';
|
|
|
});
|
|
|
- // 临时能量石动画状态
|
|
|
- const [isTempStoneAnimating, setIsTempStoneAnimating] = useState(false);
|
|
|
- const [isTempStoneVisible, setIsTempStoneVisible] = useState(true);
|
|
|
const progressBarTooltipTimerRef = useRef<number | null>(null);
|
|
|
const progressBarTooltipRef = useRef<HTMLImageElement | null>(null);
|
|
|
const [isAvatarCUnlocked, setIsAvatarCUnlocked] = useState(() => {
|
|
|
@@ -2271,109 +2268,6 @@ export const ChatBotPage = () => {
|
|
|
);
|
|
|
})}
|
|
|
|
|
|
- {/* 临时能量石+光晕 - 用于测试/展示 - 可点击,点击后沿黑线移动到动画形象中心 */}
|
|
|
- {isTempStoneVisible && (
|
|
|
- <div
|
|
|
- className={`energy-stone-container energy-stone-mission ${isTempStoneAnimating ? 'temp-stone-animating' : ''}`}
|
|
|
- style={{
|
|
|
- position: 'absolute',
|
|
|
- left: '50%',
|
|
|
- // 起点:能量石区域 top + 30% 高度(动画时由CSS动画控制)
|
|
|
- ...(isTempStoneAnimating ? {} : {
|
|
|
- top: `calc(${px2vmin(126)} + ${px2vmin(172)} * 0.3)`,
|
|
|
- }),
|
|
|
- transform: 'translate(-50%, -50%)',
|
|
|
- width: px2vmin(48),
|
|
|
- height: px2vmin(48),
|
|
|
- pointerEvents: isTempStoneAnimating ? 'none' : 'auto',
|
|
|
- cursor: isTempStoneAnimating ? 'default' : 'pointer',
|
|
|
- zIndex: 5,
|
|
|
- }}
|
|
|
- onClick={() => {
|
|
|
- if (!isTempStoneAnimating) {
|
|
|
- console.log('[临时能量石] 点击触发动画');
|
|
|
- setIsTempStoneAnimating(true);
|
|
|
- // 动画完成后隐藏元素
|
|
|
- setTimeout(() => {
|
|
|
- console.log('[临时能量石] 动画完成,隐藏元素');
|
|
|
- setIsTempStoneVisible(false);
|
|
|
- }, 1000);
|
|
|
- }
|
|
|
- }}
|
|
|
- >
|
|
|
- {/* 光晕层 */}
|
|
|
- <img
|
|
|
- src={missionEnergyStoneHint}
|
|
|
- alt=""
|
|
|
- className="energy-stone-hint"
|
|
|
- style={{
|
|
|
- position: 'absolute',
|
|
|
- top: '50%',
|
|
|
- left: '50%',
|
|
|
- transform: 'translate(-50%, -50%)',
|
|
|
- transformOrigin: 'center center',
|
|
|
- width: px2vmin(92),
|
|
|
- height: px2vmin(92),
|
|
|
- pointerEvents: 'none',
|
|
|
- zIndex: 0,
|
|
|
- maxWidth: 'none',
|
|
|
- maxHeight: 'none',
|
|
|
- objectFit: 'contain',
|
|
|
- }}
|
|
|
- />
|
|
|
- {/* 能量石图片 */}
|
|
|
- <div
|
|
|
- className="energy-stone"
|
|
|
- style={{
|
|
|
- position: 'absolute',
|
|
|
- top: '50%',
|
|
|
- left: '50%',
|
|
|
- transform: 'translate(-50%, -50%)',
|
|
|
- transformOrigin: 'center center',
|
|
|
- width: px2vmin(48),
|
|
|
- height: px2vmin(48),
|
|
|
- zIndex: 1,
|
|
|
- pointerEvents: 'none',
|
|
|
- }}
|
|
|
- >
|
|
|
- <img src={missionEnergyStone} alt="" aria-hidden="true" />
|
|
|
- </div>
|
|
|
- </div>
|
|
|
- )}
|
|
|
-
|
|
|
- {/* 临时连接线 - 从临时能量石中心到动画形象中心 */}
|
|
|
- <svg
|
|
|
- className="absolute pointer-events-none"
|
|
|
- style={{
|
|
|
- top: 0,
|
|
|
- left: 0,
|
|
|
- width: '100%',
|
|
|
- height: '100%',
|
|
|
- zIndex: 3,
|
|
|
- }}
|
|
|
- >
|
|
|
- {/*
|
|
|
- 起点:临时能量石中心
|
|
|
- - 能量石区域 top: 126px, height: 172px
|
|
|
- - 临时能量石在区域内 top: 30%
|
|
|
- - 绝对位置: 126 + 172 * 0.3 = 177.6px
|
|
|
- - 在设计稿 812px 高度下: 177.6 / 812 = 21.87%
|
|
|
-
|
|
|
- 终点:动画形象距离顶部60%位置
|
|
|
- - 动画形象 top: 248px, height: 340px
|
|
|
- - 60%位置: 248 + 340 * 0.6 = 452px
|
|
|
- - 在设计稿 812px 高度下: 452 / 812 = 55.67%
|
|
|
- */}
|
|
|
- <line
|
|
|
- x1="50%"
|
|
|
- y1="21.87%"
|
|
|
- x2="50%"
|
|
|
- y2="55.67%"
|
|
|
- stroke="black"
|
|
|
- strokeWidth="2"
|
|
|
- />
|
|
|
- </svg>
|
|
|
-
|
|
|
{/* AnimaZone 头像 - 使用设计稿 375×812 基准 + px2vmin 适配 */}
|
|
|
<div
|
|
|
className="chatbot-anima-zone-avatar absolute"
|
|
|
@@ -2403,24 +2297,6 @@ export const ChatBotPage = () => {
|
|
|
/>
|
|
|
</div>
|
|
|
|
|
|
- {/* 能量石动画终点位置标记 - 红色圆圈 */}
|
|
|
- <div
|
|
|
- style={{
|
|
|
- position: 'absolute',
|
|
|
- // 终点:动画形象距离顶部60%位置 = 248 + 340 * 0.6 = 452px
|
|
|
- top: px2vmin(452),
|
|
|
- left: '50%',
|
|
|
- transform: 'translate(-50%, -50%)',
|
|
|
- width: px2vmin(20),
|
|
|
- height: px2vmin(20),
|
|
|
- borderRadius: '50%',
|
|
|
- backgroundColor: 'red',
|
|
|
- border: `2px solid red`,
|
|
|
- zIndex: 10,
|
|
|
- pointerEvents: 'none',
|
|
|
- }}
|
|
|
- />
|
|
|
-
|
|
|
{/* 音频波形 - 宽度 100% 自适应 */}
|
|
|
<div
|
|
|
className="chatbot-audio-wave overflow-hidden"
|