返回 选择你的牌阵 请根据你的困惑选择一个适合的牌阵 {{item.name}} {{item.description}} 请输入你想询问的问题 心中默念问题,塔罗牌将为你指引方向 {{question.length}}/200 正在感应你的能量,请保持内心平静... 请挑选 {{selectedSpread.cardCount}} 张牌 凭直觉选出触动你的卡牌 {{index + 1}} module.exports.isSelected = function(indices, currentIdx) { return indices.indexOf(currentIdx) !== -1; }; module.exports.getTransform = function(indices, currentIdx, count) { var pos = indices.indexOf(currentIdx); if (pos !== -1) { // 每排最多5张牌 var maxPerRow = 5; var row = Math.floor(pos / maxPerRow); // 第几排(0或1) var col = pos % maxPerRow; // 该排的第几个 var cardsInRow = (row === 0) ? Math.min(count, maxPerRow) : (count - maxPerRow); // 槽位:宽100rpx + gap 20rpx = 120rpx 间距 var slotWidth = 100; var gap = 20; var slotSpacing = slotWidth + gap; // 计算该排槽位的水平居中偏移 // 从该排中间位置开始计算 var centerOffset = (col - (cardsInRow - 1) / 2) * slotSpacing; // 垂直偏移计算 // 第一排槽位:向上 -520rpx(已验证接近正确) // 第二排:需要减少向上的距离 // 槽位高度160 + gap 20 = 180,但实际可能需要微调 var firstRowY = -520; var secondRowOffset = 200; // 增加偏移量,让第二排更接近fan-deck var yOffset = firstRowY + (row * secondRowOffset); // row=0: -520, row=1: -320 // 位移并缩小到0.65 return 'translate(' + centerOffset + 'rpx, ' + yOffset + 'rpx) scale(0.65) rotate(0deg)'; } else { // 保持在牌堆中的放射状 return 'rotate(' + ((currentIdx - 10) * 8) + 'deg)'; } }; {{drawnCardIndices.length}} / {{selectedSpread.cardCount}} {{selectedSpread.positions[index]}} {{item.name}}{{item.isReversed ? '(逆)' : ''}} ··· 正在深度解读能量流向... 核心主题 {{aiResult.theme}} 当前状态 {{aiResult.status}} 潜在影响 {{aiResult.influence}} 整体趋势 {{spreadStory}} {{item.posName}} 在【{{questionType}}】来看:{{item.posMeaning}} 行动建议 {{aiResult.advice}}