设为首页收藏本站

云荷-个人作品展示

 找回密码
 中文注册

QQ登录

只需一步,快速开始

搜索
热搜: 音画 图文 音乐
查看: 64|回复: 13
打印 上一主题 下一主题

[音乐播放器] 网页播放器(浏览器极速模式试听)

[复制链接]
跳转到指定楼层
楼主
发表于 前天 09:27 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 楚云飞 于 2025-6-11 09:30 编辑













评分

3

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

沙发
 楼主| 发表于 前天 09:30 | 只看该作者
  1. <!DOCTYPE html>
  2. <html lang="zh-CN">
  3. <head>
  4.   <meta charset="UTF-8">
  5.   <meta name="viewport" content="width=device-width, initial-scale=1.0">
  6.   <title>楚天音画社区音乐播放器</title>
  7.   <script src="https://cdn.tailwindcss.com"></script>
  8.   <link href="https://cdn.jsdelivr.net/npm/font-awesome@4.7.0/css/font-awesome.min.css" rel="stylesheet">
  9.   
  10.   <script>
  11.     tailwind.config = {
  12.       theme: {
  13.         extend: {
  14.           colors: {
  15.             primary: '#C81623',
  16.             secondary: '#2E3033',
  17.             light: '#F5F5F5',
  18.             dark: '#18191C',
  19.           },
  20.           fontFamily: {
  21.             sans: ['Inter', 'system-ui', 'sans-serif'],
  22.           },
  23.         },
  24.       }
  25.     }
  26.   </script>
  27.   
  28.   <style type="text/tailwindcss">
  29.     @layer utilities {
  30.       .content-auto {
  31.         content-visibility: auto;
  32.       }
  33.       .music-progress {
  34.         height: 3px;
  35.         background: rgba(255, 255, 255, 0.2);
  36.         cursor: pointer;
  37.       }
  38.       .music-progress-bar {
  39.         height: 100%;
  40.         background: #C81623;
  41.         position: relative;
  42.       }
  43.       .progress-handle {
  44.         position: absolute;
  45.         right: -7px;
  46.         top: 50%;
  47.         transform: translateY(-50%);
  48.         width: 14px;
  49.         height: 14px;
  50.         background: white;
  51.         border-radius: 50%;
  52.         box-shadow: 0 0 5px rgba(0, 0, 0, 0.3);
  53.         opacity: 0;
  54.         transition: opacity 0.2s;
  55.       }
  56.       .music-progress:hover .progress-handle {
  57.         opacity: 1;
  58.       }
  59.       .album-rotate {
  60.         animation: rotate 20s linear infinite;
  61.         animation-play-state: paused;
  62.       }
  63.       .album-rotate.play {
  64.         animation-play-state: running;
  65.       }
  66.       @keyframes rotate {
  67.         from { transform: rotate(0deg); }
  68.         to { transform: rotate(360deg); }
  69.       }
  70.       .song-item {
  71.         transition: all 0.2s;
  72.       }
  73.       .song-item:hover {
  74.         background-color: rgba(200, 22, 35, 0.1);
  75.       }
  76.       .song-item.active {
  77.         color: #C81623;
  78.         font-weight: 500;
  79.       }
  80.       .volume-slider {
  81.         -webkit-appearance: none;
  82.         height: 3px;
  83.         background: rgba(255, 255, 255, 0.2);
  84.         border-radius: 5px;
  85.         outline: none;
  86.       }
  87.       .volume-slider::-webkit-slider-thumb {
  88.         -webkit-appearance: none;
  89.         width: 12px;
  90.         height: 12px;
  91.         background: white;
  92.         border-radius: 50%;
  93.         cursor: pointer;
  94.         transition: all 0.15s ease-in-out;
  95.       }
  96.       .volume-slider::-webkit-slider-thumb:hover {
  97.         box-shadow: 0 0 0 8px rgba(255, 255, 255, 0.1);
  98.       }
  99.     }
  100.   </style>
  101. </head>
  102. <body class="bg-dark text-light min-h-screen font-sans">
  103.   <div class="container mx-auto px-4 py-8 max-w-6xl">
  104.     <!-- 播放器标题 -->
  105.     <div class="text-center mb-8">
  106.       <h1 class="text-[clamp(1.5rem,3vw,2.5rem)] font-bold text-primary mb-2">楚天音画社区音乐播放器</h1>
  107.       <p class="text-gray-400">试听版 - 13首精选歌曲</p>
  108.     </div>
  109.    
  110.     <!-- 播放器主体 -->
  111.     <div class="bg-secondary rounded-xl shadow-xl overflow-hidden flex flex-col md:flex-row">
  112.       <!-- 左侧专辑和控制区 -->
  113.       <div class="w-full md:w-1/2 p-6 flex flex-col items-center">
  114.         <div class="relative mb-6">
  115.           <div class="w-64 h-64 rounded-full overflow-hidden border-8 border-gray-800 shadow-lg album-container">
  116.             <img id="albumCover" src="https://picsum.photos/seed/music1/500/500" alt="专辑封面" class="w-full h-full object-cover album-rotate">
  117.           </div>
  118.           <div class="absolute top-1/2 left-1/2 transform -translate-x-1/2 -translate-y-1/2 w-16 h-16 bg-secondary rounded-full flex items-center justify-center shadow-inner">
  119.             <div class="w-6 h-6 bg-dark rounded-full"></div>
  120.           </div>
  121.         </div>
  122.         
  123.         <div class="text-center mb-4">
  124.           <h2 id="songTitle" class="text-xl font-semibold">歌曲标题</h2>
  125.           <p id="songArtist" class="text-gray-400">歌手</p>
  126.         </div>
  127.         
  128.         <!-- 进度条 -->
  129.         <div class="w-full mb-6">
  130.           <div class="flex justify-between text-xs text-gray-400 mb-1">
  131.             <span id="currentTime">0:00</span>
  132.             <span id="duration">0:00</span>
  133.           </div>
  134.           <div class="music-progress" id="progressBar">
  135.             <div class="music-progress-bar" id="progress"></div>
  136.           </div>
  137.         </div>
  138.         
  139.         <!-- 控制按钮 -->
  140.         <div class="w-full flex justify-between items-center">
  141.           <button id="shuffleBtn" class="text-gray-400 hover:text-primary transition-colors">
  142.             <i class="fa fa-random text-xl"></i>
  143.           </button>
  144.           <button id="prevBtn" class="text-gray-400 hover:text-primary transition-colors">
  145.             <i class="fa fa-step-backward text-2xl"></i>
  146.           </button>
  147.           <button id="playBtn" class="bg-primary text-white w-14 h-14 rounded-full flex items-center justify-center shadow-lg hover:bg-primary/90 transition-all transform hover:scale-105">
  148.             <i class="fa fa-pause text-xl ml-1"></i>
  149.           </button>
  150.           <button id="nextBtn" class="text-gray-400 hover:text-primary transition-colors">
  151.             <i class="fa fa-step-forward text-2xl"></i>
  152.           </button>
  153.           <button id="repeatBtn" class="text-primary transition-colors">
  154.             <i class="fa fa-repeat text-xl"></i><span class="absolute text-[8px]">1</span>
  155.           </button>
  156.         </div>
  157.         
  158.         <!-- 音量控制 -->
  159.         <div class="w-full mt-6 flex items-center justify-center">
  160.           <button id="muteBtn" class="text-gray-400 hover:text-primary transition-colors mr-3">
  161.             <i class="fa fa-volume-up"></i>
  162.           </button>
  163.           <input type="range" id="volumeSlider" min="0" max="1" step="0.01" value="0.7" class="volume-slider w-32">
  164.         </div>
  165.       </div>
  166.       
  167.       <!-- 右侧歌曲列表 -->
  168.       <div class="w-full md:w-1/2 bg-dark/50 p-6">
  169.         <div class="flex justify-between items-center mb-4">
  170.           <h3 class="text-lg font-semibold">播放列表</h3>
  171.           <span class="text-xs text-gray-400"><span id="songCount">0</span>/13 首</span>
  172.         </div>
  173.         
  174.         <div class="overflow-y-auto max-h-[400px]" id="playlistContainer">
  175.           <!-- 播放列表将通过JavaScript动态生成 -->
  176.         </div>
  177.       </div>
  178.     </div>
  179.    
  180.     <!-- 页脚 -->
  181.     <div class="mt-8 text-center text-gray-500 text-sm">
  182.       <p>楚天音画社区音乐试听版 &copy; 2025</p>
  183.       <p class="mt-1">本播放器仅用于演示,所有音乐版权归原作者所有</p>
  184.     </div>
  185.   </div>

  186.   <script>
  187.     // 音乐列表数据
  188.     const songs = [
  189.       { id: 1, title: "蜀山", artist: "马久越", album: "编辑:云飞扬", cover: "https://picsum.photos/seed/music1/500/500", src: "https://upfile.mp3.wf/view.php/48f19f0f6d2dbe56abab4c35f0ac2295.mp3" },
  190.       { id: 2, title: "流沙", artist: "马久越", album: "编辑:云飞扬", cover: "https://picsum.photos/seed/music2/500/500", src: "https://upfile.mp3.wf/view.php/deb5c303021f4d65c6adabd06dbc3bc5.mp3" },
  191.       { id: 3, title: "轮回", artist: "马久越", album: "编辑:云飞扬", cover: "https://picsum.photos/seed/music3/500/500", src: "https://upfile.mp3.wf/view.php/c6ce66a203df61f16064cda1fb874c3f.mp3" },
  192.       { id: 4, title: "胡旋舞", artist: "马久越", album: "编辑:云飞扬", cover: "https://picsum.photos/seed/music4/500/500", src: "https://upfile.mp3.wf/view.php/f258e8a6f5391f08e4075ca4c9b37b55.mp3" },
  193.       { id: 5, title: "精灵", artist: "马久越", album: "编辑:云飞扬", cover: "https://picsum.photos/seed/music5/500/500", src: "https://upfile.mp3.wf/view.php/c73bbd8d5aa392181f7b299c6ff1c381.mp3" },
  194.       { id: 6, title: "聆听", artist: "马久越", album: "编辑:云飞扬", cover: "https://picsum.photos/seed/music6/500/500", src: "https://upfile.mp3.wf/view.php/108eefe959624f66fc445036d5615768.mp3" },
  195.       { id: 7, title: "面具", artist: "马久越", album: "编辑:云飞扬", cover: "https://picsum.photos/seed/music7/500/500", src: "https://upfile.mp3.wf/view.php/65ecf225e8fc1d15e5a1fcd18b72b739.mp3" },
  196.       { id: 8, title: "情殇", artist: "马久越", album: "编辑:云飞扬", cover: "https://picsum.photos/seed/music8/500/500", src: "https://upfile.mp3.wf/view.php/602733ae06318b30676cc93db49fe0c8.mp3" },
  197.       { id: 9, title: "琼瑶", artist: "马久越", album: "编辑:云飞扬", cover: "https://picsum.photos/seed/music9/500/500", src: "https://upfile.mp3.wf/view.php/10536bfec13cec5adc4ea9f893a8a93d.mp3" },
  198.       { id: 10, title: "硕人", artist: "马久越", album: "编辑:云飞扬", cover: "https://picsum.photos/seed/music10/500/500", src: "https://upfile.mp3.wf/view.php/7396e44cdf3afd149611dcbedfae00db.mp3" },
  199.       { id: 11, title: "踏歌行", artist: "马久越", album: "编辑:云飞扬", cover: "https://picsum.photos/seed/music11/500/500", src: "https://upfile.mp3.wf/view.php/f502adf73325228ec5fa6b540d45f13b.mp3" },
  200.       { id: 12, title: "玄鸟", artist: "马久越", album: "编辑:云飞扬", cover: "https://picsum.photos/seed/music12/500/500", src: "https://upfile.mp3.wf/view.php/7af5c946e2e438b5b8d97a028833157c.mp3" },
  201.       { id: 13, title: "半个秋天", artist: "马久越", album: "编辑:云飞扬", cover: "https://picsum.photos/seed/music13/500/500", src: "https://upfile.mp3.wf/view.php/4c336fe14db548ba6e6fe1c57cec0eda.mp3" }
  202.     ];
  203.    
  204.     // DOM元素
  205.     const audioPlayer = new Audio();
  206.     const playBtn = document.getElementById('playBtn');
  207.     const prevBtn = document.getElementById('prevBtn');
  208.     const nextBtn = document.getElementById('nextBtn');
  209.     const shuffleBtn = document.getElementById('shuffleBtn');
  210.     const repeatBtn = document.getElementById('repeatBtn');
  211.     const progressBar = document.getElementById('progressBar');
  212.     const progress = document.getElementById('progress');
  213.     const currentTimeEl = document.getElementById('currentTime');
  214.     const durationEl = document.getElementById('duration');
  215.     const songTitle = document.getElementById('songTitle');
  216.     const songArtist = document.getElementById('songArtist');
  217.     const albumCover = document.getElementById('albumCover');
  218.     const playlistContainer = document.getElementById('playlistContainer');
  219.     const volumeSlider = document.getElementById('volumeSlider');
  220.     const muteBtn = document.getElementById('muteBtn');
  221.     const songCount = document.getElementById('songCount');
  222.    
  223.     // 播放器状态
  224.     let currentSongIndex = 0;
  225.     let isPlaying = true;
  226.     let isShuffle = false;
  227.     let repeatMode = 2; // 2: 列表循环
  228.    
  229.     // 初始化
  230.     function init() {
  231.       // 渲染播放列表
  232.       renderPlaylist();
  233.       
  234.       // 加载第一首歌曲并自动播放
  235.       loadSong(songs[currentSongIndex]);
  236.       
  237.       // 更新歌曲计数
  238.       songCount.textContent = songs.length;
  239.       
  240.       // 设置列表循环模式
  241.       setRepeatMode(repeatMode);
  242.       
  243.       // 事件监听
  244.       playBtn.addEventListener('click', togglePlayPause);
  245.       prevBtn.addEventListener('click', playPrevSong);
  246.       nextBtn.addEventListener('click', playNextSong);
  247.       shuffleBtn.addEventListener('click', toggleShuffle);
  248.       repeatBtn.addEventListener('click', toggleRepeat);
  249.       progressBar.addEventListener('click', setProgress);
  250.       audioPlayer.addEventListener('timeupdate', updateProgress);
  251.       audioPlayer.addEventListener('ended', handleSongEnd);
  252.       audioPlayer.addEventListener('loadedmetadata', displayDuration);
  253.       volumeSlider.addEventListener('input', adjustVolume);
  254.       muteBtn.addEventListener('click', toggleMute);
  255.       
  256.       // 尝试自动播放
  257.       attemptAutoPlay();
  258.     }
  259.    
  260.     // 尝试自动播放
  261.     function attemptAutoPlay() {
  262.       audioPlayer.play().catch(error => {
  263.         // 自动播放被阻止,提示用户点击播放
  264.         console.log('自动播放被阻止:', error);
  265.         playBtn.classList.add('animate-pulse');
  266.       });
  267.     }
  268.    
  269.     // 渲染播放列表
  270.     function renderPlaylist() {
  271.       playlistContainer.innerHTML = '';
  272.       
  273.       songs.forEach((song, index) => {
  274.         const songItem = document.createElement('div');
  275.         songItem.className = `song-item p-3 flex items-center justify-between border-b border-gray-800 ${index === currentSongIndex ? 'active' : ''}`;
  276.         songItem.innerHTML = `
  277.           <div class="flex items-center">
  278.             <div class="w-8 h-8 rounded overflow-hidden mr-3">
  279.               <img src="${song.cover}" alt="${song.title}专辑封面" class="w-full h-full object-cover">
  280.             </div>
  281.             <div>
  282.               <div class="font-medium">${song.title}</div>
  283.               <div class="text-xs text-gray-400">${song.artist} - ${song.album}</div>
  284.             </div>
  285.           </div>
  286.           <div class="text-gray-400">
  287.             ${index === currentSongIndex ? '<i class="fa fa-volume-up text-primary"></i>' : '<i class="fa fa-play-circle-o"></i>'}
  288.           </div>
  289.         `;
  290.         
  291.         songItem.addEventListener('click', () => {
  292.           if (index !== currentSongIndex) {
  293.             currentSongIndex = index;
  294.             loadSong(songs[currentSongIndex]);
  295.             renderPlaylist();
  296.           } else {
  297.             togglePlayPause();
  298.           }
  299.         });
  300.         
  301.         playlistContainer.appendChild(songItem);
  302.       });
  303.     }
  304.    
  305.     // 加载歌曲
  306.     function loadSong(song) {
  307.       audioPlayer.src = song.src;
  308.       songTitle.textContent = song.title;
  309.       songArtist.textContent = song.artist;
  310.       albumCover.src = song.cover;
  311.       albumCover.alt = `${song.title}专辑封面`;
  312.       
  313.       // 播放歌曲
  314.       if (isPlaying) {
  315.         audioPlayer.play();
  316.         albumCover.classList.add('play');
  317.         playBtn.innerHTML = '<i class="fa fa-pause text-xl ml-1"></i>';
  318.       }
  319.     }
  320.    
  321.     // 播放/暂停切换
  322.     function togglePlayPause() {
  323.       if (isPlaying) {
  324.         audioPlayer.pause();
  325.         playBtn.innerHTML = '<i class="fa fa-play text-xl ml-1"></i>';
  326.         albumCover.classList.remove('play');
  327.         playBtn.classList.remove('animate-pulse');
  328.       } else {
  329.         audioPlayer.play();
  330.         playBtn.innerHTML = '<i class="fa fa-pause text-xl ml-1"></i>';
  331.         albumCover.classList.add('play');
  332.         playBtn.classList.remove('animate-pulse');
  333.       }
  334.       isPlaying = !isPlaying;
  335.     }
  336.    
  337.     // 播放上一首
  338.     function playPrevSong() {
  339.       if (isShuffle) {
  340.         currentSongIndex = getRandomIndex();
  341.       } else {
  342.         currentSongIndex = (currentSongIndex - 1 + songs.length) % songs.length;
  343.       }
  344.       loadSong(songs[currentSongIndex]);
  345.       renderPlaylist();
  346.     }
  347.    
  348.     // 播放下一首
  349.     function playNextSong() {
  350.       if (isShuffle) {
  351.         currentSongIndex = getRandomIndex();
  352.       } else {
  353.         currentSongIndex = (currentSongIndex + 1) % songs.length;
  354.       }
  355.       loadSong(songs[currentSongIndex]);
  356.       renderPlaylist();
  357.     }
  358.    
  359.     // 随机播放索引
  360.     function getRandomIndex() {
  361.       let randomIndex;
  362.       do {
  363.         randomIndex = Math.floor(Math.random() * songs.length);
  364.       } while (randomIndex === currentSongIndex);
  365.       return randomIndex;
  366.     }
  367.    
  368.     // 切换随机播放
  369.     function toggleShuffle() {
  370.       isShuffle = !isShuffle;
  371.       shuffleBtn.classList.toggle('text-primary', isShuffle);
  372.       shuffleBtn.classList.toggle('text-gray-400', !isShuffle);
  373.     }
  374.    
  375.     // 切换循环模式
  376.     function toggleRepeat() {
  377.       repeatMode = (repeatMode + 1) % 3;
  378.       setRepeatMode(repeatMode);
  379.     }
  380.    
  381.     // 设置循环模式
  382.     function setRepeatMode(mode) {
  383.       repeatMode = mode;
  384.       
  385.       // 更新按钮样式和图标
  386.       if (repeatMode === 0) {
  387.         // 顺序播放
  388.         repeatBtn.innerHTML = '<i class="fa fa-repeat text-xl"></i>';
  389.         repeatBtn.classList.remove('text-primary');
  390.         repeatBtn.classList.add('text-gray-400');
  391.       } else if (repeatMode === 1) {
  392.         // 单曲循环
  393.         repeatBtn.innerHTML = '<i class="fa fa-repeat text-xl"></i>';
  394.         repeatBtn.classList.remove('text-gray-400');
  395.         repeatBtn.classList.add('text-primary');
  396.       } else {
  397.         // 列表循环
  398.         repeatBtn.innerHTML = '<i class="fa fa-repeat text-xl"></i><span class="absolute text-[8px]">1</span>';
  399.         repeatBtn.classList.remove('text-gray-400');
  400.         repeatBtn.classList.add('text-primary');
  401.       }
  402.     }
  403.    
  404.     // 设置进度条
  405.     function setProgress(e) {
  406.       const totalWidth = this.clientWidth;
  407.       const clickPosition = e.offsetX;
  408.       const duration = audioPlayer.duration;
  409.       
  410.       audioPlayer.currentTime = (clickPosition / totalWidth) * duration;
  411.     }
  412.    
  413.     // 更新进度条
  414.     function updateProgress() {
  415.       const { currentTime, duration } = audioPlayer;
  416.       const progressPercent = (currentTime / duration) * 100;
  417.       progress.style.width = `${progressPercent}%`;
  418.       
  419.       // 更新当前时间显示
  420.       currentTimeEl.textContent = formatTime(currentTime);
  421.     }
  422.    
  423.     // 显示歌曲时长
  424.     function displayDuration() {
  425.       durationEl.textContent = formatTime(audioPlayer.duration);
  426.     }
  427.    
  428.     // 格式化时间
  429.     function formatTime(seconds) {
  430.       if (isNaN(seconds)) return '0:00';
  431.       
  432.       const minutes = Math.floor(seconds / 60);
  433.       const remainingSeconds = Math.floor(seconds % 60);
  434.       
  435.       return `${minutes}:${remainingSeconds < 10 ? '0' : ''}${remainingSeconds}`;
  436.     }
  437.    
  438.     // 处理歌曲结束
  439.     function handleSongEnd() {
  440.       if (repeatMode === 1) {
  441.         // 单曲循环
  442.         audioPlayer.currentTime = 0;
  443.         audioPlayer.play();
  444.       } else if (repeatMode === 2 || isShuffle) {
  445.         // 列表循环或随机播放
  446.         playNextSong();
  447.       } else {
  448.         // 顺序播放
  449.         if (currentSongIndex < songs.length - 1) {
  450.           playNextSong();
  451.         } else {
  452.           // 播放列表结束,停止播放
  453.           isPlaying = false;
  454.           playBtn.innerHTML = '<i class="fa fa-play text-xl ml-1"></i>';
  455.           albumCover.classList.remove('play');
  456.         }
  457.       }
  458.     }
  459.    
  460.     // 调整音量
  461.     function adjustVolume() {
  462.       audioPlayer.volume = volumeSlider.value;
  463.       
  464.       // 更新音量图标
  465.       updateVolumeIcon();
  466.     }
  467.    
  468.     // 切换静音
  469.     function toggleMute() {
  470.       audioPlayer.muted = !audioPlayer.muted;
  471.       
  472.       // 更新音量图标和滑块
  473.       if (audioPlayer.muted) {
  474.         volumeSlider.value = 0;
  475.       } else {
  476.         volumeSlider.value = audioPlayer.volume;
  477.       }
  478.       
  479.       updateVolumeIcon();
  480.     }
  481.    
  482.     // 更新音量图标
  483.     function updateVolumeIcon() {
  484.       if (audioPlayer.muted || audioPlayer.volume === 0) {
  485.         muteBtn.innerHTML = '<i class="fa fa-volume-off"></i>';
  486.       } else if (audioPlayer.volume < 0.5) {
  487.         muteBtn.innerHTML = '<i class="fa fa-volume-down"></i>';
  488.       } else {
  489.         muteBtn.innerHTML = '<i class="fa fa-volume-up"></i>';
  490.       }
  491.     }
  492.    
  493.     // 初始化播放器
  494.     init();
  495.   </script>
  496. </body>
  497. </html>
  498.    
复制代码

评分

3

查看全部评分

回复 支持 反对

使用道具 举报

板凳
发表于 前天 14:06 | 只看该作者
撒花花
问好楚帅
回复 支持 反对

使用道具 举报

地板
发表于 前天 14:07 | 只看该作者
这款网页播放器好漂亮
谢谢楚帅代码分享,给力哈
回复 支持 反对

使用道具 举报

5#
发表于 前天 14:08 | 只看该作者
音乐薇听不到呢~~
回复 支持 反对

使用道具 举报

6#
发表于 前天 14:08 | 只看该作者
换个时间段再来~~
回复 支持 反对

使用道具 举报

7#
发表于 前天 20:07 | 只看该作者
哇哦,这个很牛啊,而且代码都贴出来了呀,
好漂亮哦这播放器,哈哈~~
回复 支持 反对

使用道具 举报

8#
发表于 前天 20:08 | 只看该作者
请教云飞啊,如果我要做的话是不是只要在代码上换链接换文字就可以了?
如果是这样的话,等我有空了也去玩玩,
这个播放器好看的~~
回复 支持 反对

使用道具 举报

9#
发表于 前天 20:09 | 只看该作者
谢谢云飞啊,辛苦了,做这个应该很费功夫吧
回复 支持 反对

使用道具 举报

10#
发表于 前天 20:10 | 只看该作者
绿蔷薇 发表于 2025-6-11 14:08
音乐薇听不到呢~~

很难得哇,我这次能听到诶
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 中文注册

本版积分规则

苏ICP备16043306号-1    

GMT+8, 2025-6-13 16:55 , Processed in 0.070540 second(s), 21 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表