148 lines
10 KiB
JavaScript
148 lines
10 KiB
JavaScript
// 引入公共资源(原生小程序中需确保路径正确,若为工具类可直接 require,若为静态资源需用绝对路径)
|
||
const common_vendor = require("../../common/vendor.js");
|
||
const common_assets = require("../../common/assets.js");
|
||
|
||
// 定义舞蹈列表数据(原生小程序用普通数组存储,无需 ref 响应式包装)
|
||
const danceList = [
|
||
{
|
||
id: 0,
|
||
name: "街舞",
|
||
category: "STORE",
|
||
description: "街舞是一种充满活力和创意的舞蹈形式,起源于美国街头文化。它以自由的风格、强烈的节奏感和个性化的表达而闻名,是年轻人展现自我、释放激情的绝佳方式。",
|
||
history: "街舞起源于20世纪70年代的美国纽约,最初是非洲裔和拉丁裔青年在街头聚会时的即兴舞蹈。随着嘻哈文化的发展,街舞逐渐形成了Breaking、Popping、Locking、Hip-hop等多种风格,并传播到世界各地。",
|
||
features: "街舞具有动作多样化、变化快的特点,强调个人风格和即兴创作。舞蹈动作力度强、节奏感明显,融合了体操、武术等元素。舞者可以自由发挥创意,展现独特的个性和态度。",
|
||
tips: "学习街舞需要循序渐进,先掌握基本的律动和步伐,再学习复杂的技巧动作。要多听音乐培养节奏感,勤加练习提高身体协调性。最重要的是要有自信,敢于表达自己的风格。"
|
||
},
|
||
{
|
||
id: 1,
|
||
name: "芭蕾舞",
|
||
category: "ACTIVITY",
|
||
description: "芭蕾舞是一种优雅高贵的古典舞蹈,注重技巧性和艺术表现力。它以严格的动作规范、优美的身体线条和深刻的艺术内涵而著称,是舞蹈艺术的瑰宝。",
|
||
history: "芭蕾舞起源于15世纪的意大利宫廷,后在法国路易十四时期得到大力发展。18世纪传入俄国后达到艺术高峰,产生了《天鹅湖》、《胡桃夹子》等经典作品。现代芭蕾在保持古典精髓的同时,融入了更多创新元素。",
|
||
features: "芭蕾舞动作规范严格,要求舞者具备良好的身体条件和扎实的基本功。舞蹈注重身体线条的延伸和姿态的优美,强调轻盈飘逸的质感。每个动作都有严格的标准,需要长期训练才能达到专业水准。",
|
||
tips: "学习芭蕾需要从基本功开始,包括把杆练习、中间练习等。要注重身体姿态的正确性,培养良好的舞蹈感觉。坚持每天练习,逐步提高柔韧性、力量和协调性。同时要培养音乐感和艺术表现力。"
|
||
},
|
||
{
|
||
id: 2,
|
||
name: "机械舞",
|
||
category: "STORE",
|
||
description: "机械舞是街舞的一种风格,通过肌肉的快速收缩与放松产生震动效果,模拟机器人的动作。它以独特的视觉效果和精确的身体控制而著称,是技巧性很强的舞蹈形式。",
|
||
history: "机械舞起源于20世纪70年代的美国加州,由舞者Boogaloo Sam创立。最初受到机器人和动画片的启发,后来发展成为街舞文化的重要组成部分。80年代通过电视节目传播到世界各地,成为流行的舞蹈风格。",
|
||
features: '机械舞的核心是通过肌肉的控制产生"Pop"的效果,使身体看起来像机器人一样僵硬而有节奏。舞蹈要求精确的时间掌控和身体各部位的独立控制,动作具有很强的视觉冲击力和娱乐性。',
|
||
tips: "学习机械舞要从基础的肌肉控制开始,练习如何让身体各部位产生震动效果。要培养对音乐节拍的敏感度,掌握准确的时间点。多观察机器人的动作特点,模仿其僵硬而精确的运动方式。"
|
||
},
|
||
{
|
||
id: 3,
|
||
name: "古典舞",
|
||
category: "ACTIVITY",
|
||
description: "中国古典舞承载着深厚的文化底蕴,展现东方舞蹈的独特魅力。它融合了武术、戏曲等传统艺术元素,以身韵结合、意境深远而著称,是中华文化的重要载体。",
|
||
history: "中国古典舞有着悠久的历史,可以追溯到古代宫廷舞蹈和民间舞蹈。经过历代艺术家的传承和发展,形成了独特的艺术风格。现代古典舞在保持传统精髓的基础上,融入了现代舞蹈技巧,展现出新的艺术魅力。",
|
||
features: '古典舞注重"形神兼备,身心并用",强调内在气质的培养。动作流畅优美,富有诗意,讲究"圆、游、变、幻"的运动规律。舞蹈融合了"身法、身韵、技巧"三大要素,体现了中华文化的深厚底蕴。',
|
||
tips: '学习古典舞要注重基本功训练,包括身体的柔韧性、协调性和表现力。要理解舞蹈的文化内涵,培养对传统文化的感悟。练习时要注意动作的韵律感,追求"形神兼备"的艺术境界。'
|
||
},
|
||
{
|
||
id: 4,
|
||
name: "拉丁舞",
|
||
category: "STORE",
|
||
description: "拉丁舞热情奔放,充满异域风情,是社交舞蹈的重要组成部分。它以动感的音乐、激情的动作和强烈的表现力而著称,能够充分展现舞者的魅力和活力。",
|
||
history: "拉丁舞起源于拉丁美洲,融合了欧洲、非洲和美洲原住民的舞蹈元素。20世纪初传入欧美后,逐渐发展成为国际标准舞的重要组成部分。现在包括恰恰、桑巴、伦巴、牛仔、斗牛五个舞种。",
|
||
features: "拉丁舞动作热情奔放,充满活力,音乐节奏明快富有感染力。舞蹈注重身体线条和肌肉控制,强调胯部和腰部的灵活运用。具有很强的社交属性,适合双人配合表演。",
|
||
tips: "学习拉丁舞要从基本步伐开始,掌握各个舞种的特点和风格。要培养对音乐的感受力,学会用身体表达音乐的情感。注重身体协调性的训练,特别是胯部和腰部的灵活性。要敢于表达,展现自信和热情。"
|
||
},
|
||
{
|
||
id: 5,
|
||
name: "摩登舞",
|
||
category: "ACTIVITY",
|
||
description: "摩登舞优雅端庄,是标准舞的重要组成部分,展现绅士淑女风范。它以规范的动作、优美的姿态和高雅的气质而著称,是社交场合的经典舞蹈形式。",
|
||
history: "摩登舞起源于欧洲宫廷舞蹈,经过几个世纪的发展演变,形成了现在的标准形式。包括华尔兹、探戈、狐步、快步、维也纳华尔兹五个舞种。20世纪初开始在世界范围内推广,成为国际标准舞的重要组成部分。",
|
||
features: "摩登舞动作优雅端庄,姿态标准规范,强调双人配合的默契程度。舞蹈音乐优美,富有艺术感染力,注重礼仪和绅士淑女风范。要求舞者具备良好的身体姿态和高雅的气质。",
|
||
tips: "学习摩登舞要注重基本姿态的训练,保持挺拔优雅的身体线条。要培养与舞伴的默契配合,学会引带和跟随。注重音乐感的培养,理解不同舞种的风格特点。要注意礼仪修养,展现绅士淑女的风范。"
|
||
}
|
||
];
|
||
|
||
// 原生小程序 Page 构造器(核心:数据、生命周期、方法)
|
||
Page({
|
||
// 1. 页面初始数据(对应 Vue 的 ref 数据,需用 this.data 访问,this.setData 更新)
|
||
data: {
|
||
currentDance: null, // 当前选中的舞蹈详情
|
||
danceIndex: 0, // 当前舞蹈在列表中的索引
|
||
wallpaperUrl: "", // 壁纸地址
|
||
appId: "", // 应用 ID
|
||
// 引入静态资源(原生小程序中需确保 assets 内的资源路径正确,此处与原代码保持一致)
|
||
commonAssets: common_assets
|
||
},
|
||
|
||
// 2. 页面加载生命周期(对应原代码的 onLoad,接收页面参数 options)
|
||
onLoad(options) {
|
||
// 日志打印(替换原框架的 log 方法,使用微信原生 console.log)
|
||
console.log("at pages/index/detail.js: onLoad", "接收到的参数:", options);
|
||
|
||
// 提取 app_id(逻辑与原代码一致,适配原生小程序 API)
|
||
try {
|
||
if (options && options.app_id) {
|
||
this.setData({ appId: options.app_id }); // 原生用 setData 更新数据
|
||
} else {
|
||
// 原生小程序获取当前页面栈:getCurrentPages() 直接调用(无需通过 vendor)
|
||
const pages = getCurrentPages();
|
||
if (pages && pages.length) {
|
||
const curPage = pages[pages.length - 1]; // 最后一个页面即当前页
|
||
if (curPage && curPage.options && curPage.options.app_id) {
|
||
this.setData({ appId: curPage.options.app_id });
|
||
} else if (curPage && curPage.__route__) {
|
||
const route = curPage.__route__;
|
||
const idx = route.indexOf('?');
|
||
if (idx !== -1) {
|
||
const qs = route.substring(idx + 1);
|
||
const parts = qs.split('&');
|
||
for (let k = 0; k < parts.length; k++) {
|
||
const [key, value] = parts[k].split('=');
|
||
if (key === 'app_id') {
|
||
this.setData({ appId: decodeURIComponent(value || '') });
|
||
break;
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
} catch (e) {
|
||
console.error("提取 app_id 失败:", e);
|
||
}
|
||
|
||
// 处理壁纸地址逻辑
|
||
if (options.url === "1") { // 原生小程序参数默认是字符串,需注意类型匹配
|
||
this.setData({ wallpaperUrl: options.url });
|
||
return;
|
||
}
|
||
|
||
// 处理舞蹈详情逻辑(根据 options.index 选择当前舞蹈)
|
||
if (options.index !== undefined) {
|
||
const index = parseInt(options.index);
|
||
this.setData({
|
||
danceIndex: index,
|
||
currentDance: danceList[index] // 从预定义列表中获取对应舞蹈
|
||
});
|
||
} else {
|
||
// 无索引时默认显示第一个舞蹈
|
||
this.setData({
|
||
currentDance: danceList[0]
|
||
});
|
||
}
|
||
},
|
||
|
||
// 3. 其他可选生命周期(如需扩展,可在此添加,如 onShow、onReady 等)
|
||
onShow() {
|
||
// 页面显示时的逻辑(如重新获取数据等,根据需求添加)
|
||
},
|
||
|
||
// 4. 自定义方法(如需添加交互逻辑,可在此定义,如切换舞蹈、跳转等)
|
||
// 示例:切换到下一个舞蹈
|
||
switchToNextDance() {
|
||
const { danceIndex } = this.data;
|
||
const nextIndex = (danceIndex + 1) % danceList.length; // 循环切换
|
||
this.setData({
|
||
danceIndex: nextIndex,
|
||
currentDance: danceList[nextIndex]
|
||
});
|
||
}
|
||
}); |