香江之水音画网

标题: 【FLASH8.0】纯代码制作MP3音乐播放器 [打印本页]

作者: 漫步人生    时间: 2018-10-7 09:24
标题: 【FLASH8.0】纯代码制作MP3音乐播放器
本帖最后由 漫步人生 于 2018-10-9 10:23 编辑

http://mb.xiangjiangriverwater.com/88k.swf


  1. //新建as2.0文档(设置默认),在主场景第1帧粘贴以下语句【把文字 代码全部复制粘贴】

  2. //画背景并定位
  3. this.createEmptyMovieClip("beijing",this.getNextHighestDepth());
  4. with (beijing) {
  5. beginFill(0x666699);
  6. moveTo(0,0);
  7. lineTo(300,0);
  8. lineTo(300,370);
  9. lineTo(0,370);
  10. endFill();
  11. import flash.filters.*;
  12. filters = [new DropShadowFilter()];
  13. _x = 175;
  14. _y = 75;
  15. }

  16. //画小框并定位
  17. this.createEmptyMovieClip("xiaokuang",this.getNextHighestDepth());
  18. with (xiaokuang) {
  19. beginFill(0x000000);
  20. lineStyle(1,0x33cc33,100);
  21. moveTo(0,0);
  22. lineTo(280,0);
  23. lineTo(280,60);
  24. lineTo(0,60);
  25. endFill();
  26. _x = 185;
  27. _y = 100;
  28. }

  29. //画5个黑三角并定位
  30. this.createEmptyMovieClip("sanjiao",this.getNextHighestDepth());
  31. with (sanjiao) {
  32. beginFill(0x000000);
  33. moveTo(0,0);
  34. lineTo(12,7.5);
  35. lineTo(0,15);
  36. endFill();
  37. }
  38. sanjiao._visible = 0;
  39. for (i=1; i<=5; i++) {
  40. duplicateMovieClip("sanjiao", "sanjiao"+i, this.getNextHighestDepth());
  41. sanjiao1._x = 235;
  42. sanjiao2._x = 187;
  43. sanjiao3._x = 194;
  44. sanjiao4._x = 212;
  45. sanjiao5._x = 219;
  46. sanjiao2._xscale = sanjiao3._xscale=50;
  47. sanjiao4._xscale = sanjiao5._xscale=-50;
  48. sanjiao1._y = sanjiao2._y=sanjiao3._y=sanjiao4._y=sanjiao5._y=190;
  49. }

  50. //画2个矩形并定位
  51. this.createEmptyMovieClip("juxing",this.getNextHighestDepth());
  52. with (juxing) {
  53. beginFill(0x000000);
  54. moveTo(0,0);
  55. lineTo(5,0);
  56. lineTo(5,12);
  57. lineTo(0,12);
  58. endFill();
  59. }
  60. juxing._visible = 0;
  61. for (i=1; i<=2; i++) {
  62. duplicateMovieClip("juxing", "juxing"+i, this.getNextHighestDepth());
  63. juxing1._x = 257;
  64. juxing1._y = juxing2._y=191.5;
  65. juxing2._x = 264.2;
  66. }

  67. //画小喇叭并定位
  68. this.createEmptyMovieClip("laba",this.getNextHighestDepth());
  69. with (laba) {
  70. beginFill(0x000000);
  71. moveTo(0,4);
  72. lineTo(6,4);
  73. lineTo(12,0);
  74. lineTo(12,15);
  75. lineTo(6,10);
  76. lineTo(0,10);
  77. endFill();
  78. _x = 278;
  79. _y = 190;
  80. }

  81. //画音量控制的底图并定位
  82. this.createEmptyMovieClip("yinliangdi",this.getNextHighestDepth());
  83. with (yinliangdi) {
  84. beginFill(0x000000);
  85. moveTo(0,10);
  86. lineTo(70,0);
  87. lineTo(70,10);
  88. endFill();
  89. _x = 295;
  90. _y = 192;
  91. }

  92. //画音量控制滑块并能拖动
  93. this.createEmptyMovieClip("yinlianghuakuai",this.getNextHighestDepth());
  94. with (yinlianghuakuai) {
  95. beginFill(0x996600);
  96. moveTo(0,0);
  97. lineTo(6,0);
  98. lineTo(6,10);
  99. lineTo(0,10);
  100. endFill();
  101. _x = 359;
  102. _y = 192;
  103. }
  104. yinlianghuakuai.onPress = function() {
  105. startDrag(this, false, 295, 192, 359, 192);
  106. };
  107. yinlianghuakuai.onRelease = yinlianghuakuai.onReleaseOutside=function () {
  108. stopDrag();
  109. };

  110. //画显示进度的底图并定位
  111. this.createEmptyMovieClip("jindutiaodi",this.getNextHighestDepth());
  112. with (jindutiaodi) {
  113. beginFill(0x000033);
  114. moveTo(0,0);
  115. lineTo(180,0);
  116. lineTo(180,3);
  117. lineTo(0,3);
  118. endFill();
  119. _x = 185;
  120. _y = 185;
  121. }

  122. //画下载进度条并定位
  123. this.createEmptyMovieClip("xiazaijindutiao",this.getNextHighestDepth());
  124. with (xiazaijindutiao) {
  125. beginFill(0x663300);
  126. moveTo(0,0);
  127. lineTo(180,0);
  128. lineTo(180,3);
  129. lineTo(0,3);
  130. endFill();
  131. _x = 185;
  132. _y = 185;
  133. }

  134. //画播放进度条并定位
  135. this.createEmptyMovieClip("bofangjindutiao",this.getNextHighestDepth());
  136. with (bofangjindutiao) {
  137. beginFill(0x009900);
  138. moveTo(0,0);
  139. lineTo(180,0);
  140. lineTo(180,3);
  141. lineTo(0,3);
  142. endFill();
  143. _x = 185;
  144. _y = 185;
  145. }

  146. //创建“已下载”文本
  147. this.createTextField("yixiazai_txt",this.getNextHighestDepth(),185,165,0,0);
  148. my_fmt = new TextFormat();
  149. my_fmt.font = "宋体";
  150. my_fmt.color = 0x000000;
  151. my_fmt.size = 12;
  152. yixiazai_txt.text = "已下载:";
  153. yixiazai_txt.autoSize = true;
  154. yixiazai_txt.setTextFormat(my_fmt);

  155. //创建“已播放”文本
  156. this.createTextField("yibofang_txt",this.getNextHighestDepth(),285,165,0,0);
  157. my_fmt = new TextFormat();
  158. my_fmt.font = "宋体";
  159. my_fmt.color = 0x000000;
  160. my_fmt.size = 12;
  161. yibofang_txt.text = "已播放:";
  162. yibofang_txt.autoSize = true;
  163. yibofang_txt.setTextFormat(my_fmt);

  164. //创建显示“下载百分比”的动态文本
  165. this.createTextField("xiazaibfb_txt",this.getNextHighestDepth(),240,163,0,0);
  166. my_fmt = new TextFormat();
  167. my_fmt.font = "宋体";
  168. my_fmt.color = 0x000000;
  169. my_fmt.size = 12;
  170. xiazaibfb_txt.autoSize = true;
  171. xiazaibfb_txt.setTextFormat(my_fmt);

  172. //创建显示“播放百分比”的动态文本
  173. this.createTextField("bofangbfb_txt",this.getNextHighestDepth(),340,163,0,0);
  174. my_fmt = new TextFormat();
  175. my_fmt.font = "宋体";
  176. my_fmt.color = 0x000000;
  177. my_fmt.size = 12;
  178. bofangbfb_txt.autoSize = true;
  179. bofangbfb_txt.setTextFormat(my_fmt);

  180. //创建5个分别覆盖在“快进”、“快退”、“播放”、“暂停”和“喇叭”上的隐形按钮
  181. this.createEmptyMovieClip("yinxinganniu",this.getNextHighestDepth());
  182. with (yinxinganniu) {
  183. beginFill(0xffffff,30);
  184. moveTo(0,0);
  185. lineTo(15,0);
  186. lineTo(15,15);
  187. lineTo(0,15);
  188. endFill();
  189. _x = 185;
  190. _y = 190;
  191. }
  192. yinxinganniu._visible = 0;
  193. for (i=1; i<=5; i++) {
  194. duplicateMovieClip(yinxinganniu, "yinxinganniu"+i, this.getNextHighestDepth());
  195. this["yinxinganniu"+i]._x = 185+22.8*(i-1);
  196. this["yinxinganniu"+i]._y = 190;
  197. this["yinxinganniu"+i]._alpha = 0;
  198. this["yinxinganniu"+i].onRollOver = function() {
  199. this._alpha = 70;
  200. };
  201. this["yinxinganniu"+i].onRollOut = function() {
  202. this._alpha = 0;
  203. };
  204. }

  205. //快进
  206. yinxinganniu1.onPress = function() {
  207. mysound.stop();
  208. mysound.start(mysound.position/1000+10);
  209. };

  210. //快退
  211. yinxinganniu2.onPress = function() {
  212. mysound.stop();
  213. mysound.start(mysound.position/1000-10);
  214. };

  215. //播放
  216. yinxinganniu3.onPress = function() {
  217. if (tt) {
  218. mysound.stop();
  219. mysound.start(tt);
  220. } else {
  221. mysound.stop();
  222. mysound.start(0);
  223. }
  224. for (i=1; i<=20; i++) {
  225. _root["dianpingtiao"+i]._visible = 1;
  226. }
  227. };
复制代码


紧接下面的代码
作者: 漫步人生    时间: 2018-10-7 09:26
本帖最后由 漫步人生 于 2018-10-9 10:20 编辑

紧接着下面代码:
  1. //暂停
  2. yinxinganniu4.onPress = function() {
  3. mysound.stop();
  4. tt = mysound.position/1000;
  5. for (i=1; i<=20; i++) {
  6. _root["dianpingtiao"+i]._visible = 0;
  7. }
  8. };

  9. //画红斜杠并定位
  10. this.createEmptyMovieClip("hongxian",this.getNextHighestDepth());
  11. with (hongxian) {
  12. lineStyle(2,0xff0000,100);
  13. moveTo(0,0);
  14. lineTo(13,13);
  15. _x = 278;
  16. _y = 190;
  17. }
  18. hongxian._visible = 0;

  19. //静音
  20. k = 0;
  21. yinxinganniu5.onPress = function() {
  22. k++;
  23. if (k%2 == 1) {
  24. yinlianghuakuai._x = 295;
  25. hongxian._visible = 1;
  26. for (i=1; i<=20; i++) {
  27. _root["dianpingtiao"+i]._visible = 0;
  28. }
  29. } else {
  30. yinlianghuakuai._x = 359;
  31. hongxian._visible = 0;
  32. for (i=1; i<=20; i++) {
  33. _root["dianpingtiao"+i]._visible = 1;
  34. }
  35. }
  36. };

  37. //画20根电频条并定位
  38. this.createEmptyMovieClip("dianpingtiao",this.getNextHighestDepth());
  39. with (dianpingtiao) {
  40. beginFill(0x005555);
  41. moveTo(0,0);
  42. lineTo(7,0);
  43. lineTo(7,-35);
  44. lineTo(0,-35);
  45. endFill();
  46. }
  47. dianpingtiao._visible = 0;
  48. for (i=1; i<=20; i++) {
  49. duplicateMovieClip("dianpingtiao", "dianpingtiao"+i, this.getNextHighestDepth());
  50. this["dianpingtiao"+i]._visible = 0;
  51. this["dianpingtiao"+i]._x = 187+9*(i-1);
  52. this["dianpingtiao"+i]._y = 160;
  53. }

  54. //创建歌名文本
  55. this.createTextField("geming_txt",this.getNextHighestDepth(),185,218,0,0);
  56. my_fmt = new TextFormat();
  57. my_fmt.font = "宋体";
  58. my_fmt.color = 0x003366;
  59. my_fmt.size = 20;
  60. geming_txt.text = "1、送你一首吉祥的歌\n2、我和草原有个约定\n3、站在草原望北京\n4、美丽的草原我的家\n5、乌兰图雅《女人花》\n6、乌兰图雅《草原妹妹》\n7、乌兰图雅《守望相助》\n8、乌兰图雅《信天游》";
  61. geming_txt.autoSize = true;
  62. geming_txt.setTextFormat(my_fmt);

  63. //签名
  64. this.createTextField("qianming_txt",this.getNextHighestDepth(),298,425,0,0);
  65. my_fmt6 = new TextFormat();
  66. my_fmt6.font = "宋体";
  67. my_fmt6.color = 0xFFFFFF;
  68. my_fmt6.size = 15;
  69. qianming_txt.text = "制作:漫步人生";
  70. qianming_txt.autoSize = true;
  71. qianming_txt.setTextFormat(my_fmt6);

  72. //作品名
  73. this.createTextField("timu_txt",this.getNextHighestDepth(),220,78,0,0);
  74. my_fmt7 = new TextFormat();
  75. my_fmt7.font = "黑体";
  76. my_fmt7.color = 0xccccff;
  77. my_fmt7.size = 18;
  78. timu_txt.text = "纯代码MP3播放器   手动播放";
  79. timu_txt.autoSize = true;
  80. timu_txt.setTextFormat(my_fmt7);

  81. //画覆盖在歌名文本上的隐形按钮
  82. this.createEmptyMovieClip("geminganniu",this.getNextHighestDepth());
  83. with (geminganniu) {
  84. beginFill(0x000000,10);
  85. moveTo(0,0);
  86. lineTo(185,0);
  87. lineTo(185,22);
  88. lineTo(0,22);
  89. endFill();
  90. _x = 185;
  91. _y = 220;
  92. }
  93. geminganniu._visible = 0;
  94. for (i=1; i<=8; i++) {
  95. duplicateMovieClip("geminganniu", "geminganniu"+i, this.getNextHighestDepth());
  96. this["geminganniu"+i]._y = 220+20*(i-1);
  97. this["geminganniu"+i]._alpha = 10;
  98. this["geminganniu"+i].onRollOver = function() {
  99. this._alpha = 90;
  100. };
  101. this["geminganniu"+i].onRollOut = function() {
  102. this._alpha = 0;
  103. };
  104. }

  105. //创建显示当前播放曲目名的动态文本
  106. this.createTextField("gm_txt",this.getNextHighestDepth(),0,0,0,0);
  107. gm_txt.autoSize = "left";
  108. gm_txt.textColor = 0x999900;
  109. gm_txt._x = 190;
  110. gm_txt._y = 102;

  111. //自定义函数
  112. function yy(geming, dizhi) {
  113. //边加载边播放
  114. mysound = new Sound();
  115. mysound.loadSound(dizhi,true);
  116. gm_txt.text = geming;
  117. //反复播放
  118. mysound.onSoundComplete = function() {
  119. yy(geming,dizhi);
  120. };
  121. for (i=1; i<=20; i++) {
  122. _root["dianpingtiao"+i]._visible = 1;
  123. }
  124. }

  125. //按下播放相应曲目
  126. geminganniu1.onPress = function() {
  127. yy("1、送你一首吉祥的歌","http://hljhsgx.hfdn.openstorage.cn/hlj929/160928/171018sss/14-01~1.mp3");
  128. };
  129. geminganniu2.onPress = function() {
  130. yy("2、我和草原有个约定","http://hljhsgx.hfdn.openstorage.cn/hlj929/160928/171018sss/14-02~1.mp3");
  131. };
  132. geminganniu3.onPress = function() {
  133. yy("3、站在草原望北京","http://hljhsgx.hfdn.openstorage.cn/hlj929/160928/171018sss/14-03~1.mp3");
  134. };
  135. geminganniu4.onPress = function() {
  136. yy("4、美丽的草原我的家","http://hljhsgx.hfdn.openstorage.cn/hlj929/160928/171018sss/14-04~1.mp3");
  137. };
  138. geminganniu5.onPress = function() {
  139. yy("5、乌兰图雅《女人花》","http://hljhsgx.hfdn.openstorage.cn/hlj929/160928/171018sss/14-05~1.mp3");
  140. };  

  141. geminganniu6.onPress = function() {
  142. yy("6、乌兰图雅《草原妹妹》","http://hljhsgx.hfdn.openstorage.cn/hlj929/160928/171018sss/14-06~1.mp3");
  143. };

  144. geminganniu7.onPress = function() {
  145. yy("7、乌兰图雅《守望相助》","http://hljhsgx.hfdn.openstorage.cn/hlj929/160928/171018sss/14-07~1.mp3");
  146. };


  147. geminganniu8.onPress = function() {
  148. yy("8、乌兰图雅《信天游》","http://hljhsgx.hfdn.openstorage.cn/hlj929/160928/171018sss/14-09~1.mp3");
  149. };  


  150. //逐帧刷新
  151. onEnterFrame = function () {
  152. //电频条跳动
  153. for (i=1; i<=20; i++) {
  154. this["dianpingtiao"+i]._yscale = random(120-4*(i-1));
  155. }
  156. //下载进度条显示下载进度
  157. xiazaijindutiao._xscale = int(mysound.getBytesLoaded()/mysound.getBytesTotal()*100);
  158. //播放进度条显示播放进度
  159. bofangjindutiao._xscale = int(mysound.position/mysound.duration*100);
  160. //显示下载百分比
  161. xiazaibfb_txt.text = xiazaijindutiao._xscale+"%";
  162. //显示播放百分比
  163. bofangbfb_txt.text = bofangjindutiao._xscale+"%";
  164. //拖动滑块控制音量
  165. mysound.setVolume(yinlianghuakuai._x-295)/64*100;
  166. };
  167. // 测试,OK!
复制代码


源码下载:


[attach]1876[/attach]
作者: 岩新新    时间: 2018-10-7 09:41
欣赏漫步老师精彩!
作者: 大海無邊    时间: 2018-10-7 09:51
非常精彩
作者: 大海無邊    时间: 2018-10-7 09:52
制作一如即往的精彩支持點贊
作者: 雪墨    时间: 2018-10-7 18:03
创作辛苦,谢谢分享
作者: 红松故乡    时间: 2018-10-8 12:22
欣赏精彩制作,点赞。
作者: 依恋月影    时间: 2018-10-8 18:23

欣赏精彩制作,点赞。




欢迎光临 香江之水音画网 (http://www.xiangjiangriverwater.com/) Powered by Discuz! X3.2