`
strugglesMen
  • 浏览: 111938 次
  • 性别: Icon_minigender_2
  • 来自: 杭州
社区版块
存档分类
最新评论

Flex4 制作歌词同步

阅读更多
<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" 
			   xmlns:s="library://ns.adobe.com/flex/spark" 
			   xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955" minHeight="600"
			   creationComplete="application1_creationCompleteHandler(event)" width="576" height="420">
	<fx:Script>
		<![CDATA[
			import flash.display.Sprite;
			import flash.events.Event;
			import flash.media.Sound;
			import flash.media.SoundChannel;
			import flash.net.URLLoader;
			import flash.net.URLRequest;
			import flash.system.System;
			
			import mx.events.EffectEvent;
			import mx.events.FlexEvent;
			
			private var LRCarray:Array=new Array(); 
			private var sc:SoundChannel;
			private var timer:Timer;
			private var preLrc:String;
			private var curLrc:String;
			[Embed(source='1524407_1200x1000_0.jpg')]
			private var bgImg:Class;
			[Embed(source='chunwenyiaiqing.mp3')]
			private var QHC:Class;
			protected function application1_creationCompleteHandler(event:FlexEvent):void
			{
				System.useCodePage=true;
				lrc_txt.text="正在加载歌词...";
				preLrc = "正在加载歌词...";
				curLrc = "正在加载歌词...";
				var loader:URLLoader=new URLLoader(); 
				loader.load(new URLRequest("cwyan.lrc")); 
				loader.addEventListener(Event.COMPLETE,LoadFinish);  
				//LoadFinish(new Event(Event.COMPLETE));
				var sound:Sound=new QHC();
				sc=sound.play(); 
				timer = new Timer(50);
				timer.addEventListener(TimerEvent.TIMER,SoundPlaying);
				timer.start();
				m.duration = 500;
				m.yFrom = 300;
				m.yTo = 29;
				m.stop();
				m.play();
			}
			private function SoundPlaying(evt:Event):void { 
				if(curLrc != preLrc){
					var alpha:uint = Math.round(Math.random()*255);
					var red:uint = Math.round(Math.random()*255);
					var green:uint = Math.round(Math.random()*255);
					var blue:uint = Math.round(Math.random()*255);
					var c:uint = alpha << 24 | red << 16 | green << 8 | blue;
					lrc_txt.setStyle("color",c);
					m.duration = 800;
					m.yFrom = 300;
					m.yTo = 29;
					m.stop();
					m.play();
					preLrc = curLrc;
				}
				for (var i:int=1; i < LRCarray.length; i++) {
					if (sc.position < LRCarray[i].timer) { 
						lrc_txt.text=LRCarray[i-1].lyric; 
						break; 
					}
					lrc_txt.text=LRCarray[LRCarray.length-1].lyric;
				}
				curLrc = lrc_txt.text;
				
			}
			/**
			 *解析lrc 文件内容成数组数据 
			 */
			private function LoadFinish(evt:Event):void { 
				var list:String=evt.target.data;
				//var list:String=GeCi.lrcTxt;
				var listarray:Array=list.split("\n");
				var reg:RegExp=/\[[0-5][0-9]:[0-5][0-9].[0-9][0-9]\]/g; 
				for (var i:int=0; i < listarray.length; i++) { 
					var info:String=listarray[i];
					var len:int=info.match(reg).length; 
					var timeAry:Array=info.match(reg); 
					var lyric:String=info.substr(len*10);
					for (var k:int=0; k < timeAry.length; k++) { 
						var obj:Object=new Object();
						var ctime:String=timeAry[k];
						var ntime:Number=Number(ctime.substr(1,2))*60+Number(ctime.substr(4,5)); 
						obj.timer=ntime*1000;
						obj.lyric=lyric;
						LRCarray.push(obj); 
					}
				}
				LRCarray.sort(compare); 
			}
			/**
			 *歌词顺序按播放时间排序 
			 */
			private function compare(paraA:Object,paraB:Object):int { 
				if (paraA.timer > paraB.timer) { 
					return 1;
				} if (paraA.timer < paraB.timer) {
					return -1;
				}
				return 0; 
			}
			
		]]>
	</fx:Script>
	<fx:Declarations>
		<!-- 将非可视元素(例如服务、值对象)放在此处 -->
		<s:Move target="{lrc_txt}" id="m"/>
	</fx:Declarations>
	<mx:Image source="{bgImg}" width="100%" height="100%"/>
	<s:Label x="-1" y="11" id="lrc_txt"  width="576" height="29" color="#FA0707" verticalAlign="middle" textAlign="center" fontFamily="宋体" fontWeight="bold" fontSize="14"/>
</s:Application>
分享到:
评论

相关推荐

    Flex图表制作Flex图表制作

    Flex图表制作Flex图表制作Flex图表制作Flex图表制作Flex图表制作Flex图表制作Flex图表制作Flex图表制作Flex图表制作Flex图表制作Flex图表制作Flex图表制作Flex图表制作Flex图表制作Flex图表制作Flex图表制作Flex图表...

    flex 自定义 制作 流程图 (五种)

    flex 流程图 制作 flex 流程图 制作flex 流程图 制作flex 流程图 制作flex 流程图 制作flex 流程图 制作flex 流程图 制作flex 流程图 制作flex 流程图 制作flex 流程图 制作flex 流程图 制作flex 流程图 制作flex ...

    FLEX4的皮肤制作教程

    FLEX4的皮肤制作教程FLEX4的皮肤制作教程FLEX4的皮肤制作教程FLEX4的皮肤制作教程

    Flex万年历记事本_flex源码

    Flex万年历记事本_flex源码

    FLEX4的皮肤skin

    FLEX4的皮肤skin.教你如何使用皮肤

    《Flex 4实战》.pdf

    Flex4中引入了新的ui组件,提供了更好的性能监控,并且大大提高了编译速度。《Flex 4实战》是一本全面的指南,为web设计人员和开发人员提供了Flex的详细介绍。《Flex 4实战》从基础讲起,介绍了有关表单和数据的知识...

    FLEX4_Flex4教程 - FLEX4从入门到精通,挺不错的值得一看

    FLEX4_Flex4教程 - FLEX4从入门到精通,挺不错的值得一看

    Flex 4 高级编程 Flex 4 高级编程

    Flex 4 高级编程Flex 4 高级编程Flex 4 高级编程Flex 4 高级编程

    flex 4 学习资料

    基于flex4技术从零开发flex博客系统 : 1 开发环境配置与hello world(1) - 豆豆网 flex+blazeDs与Ext+dwr比较_蓝色幻想_百度空间 基于blazeDS的flex4与spring的程序实例步骤 - dreamming_now的专栏 - CSDN博客 在...

    flex4与Java通信实例

    flex4出来一段时间了,去年看了一段时间flex3,后来由于暂时没有项目需求.所以flex遗忘了很多.这次使用flex4+myeclipse8.5录制了一个视频.以免时间长了遗忘. 软件环境:windows7+flex4+myeclipse8.5+blazeds 功能描述...

    Flex4教程 FLEX4API

    FLEX4从入门到精通,挺不错的值得一看

    flex4 实战 flex4 in action

    flex4 实战 flex4 in action pdf源码和配套的源码 和大家分享

    FLEX4_flex4教程

    flex4 flex4与服务器通信 flex 与java通信

    Flex4实战完整版(1)

    Flex4中引入了新的ui组件,提供了更好的性能监控,并且大大提高了编译速度。 《Flex4实战》是一本全面的指南,为web设计人员和开发人员提供了Flex的详细介绍。本书从基础讲起,介绍了有关表单和数据的知识,然后...

    flex4.5.1.chm flex4API文档

    flex4API文档 flex3的文档在Adobe网上就可,可是4的一直没找着. 这个Flex4API文档,是根据flex4 SDK生产的,非常权威

    flash builder 4 and flex 4 bible

    很全面的flex教程,里面的实例也很丰富~~不过是英文的~~

    flex4 中文 教程 详细介绍flex4 的用法

    flex4 中文教程 详细介绍flex4 的基本用法,适合没有基础的开发人员参考

    flex4 TabBar skin

    flex4 TabBar skin

    Flex4实战代码

    Flex4实战代码

    flex4系列教程

    在我们的印象里 Flash 只是设计师用来制作动画的工具,但实际上 Flash 也可以构建富网络应用的,但比较复杂。程序员并不习惯使用画图工具,时间轴和可视化面板等来开发富网络应用,Flex 的出现解决了这一问题。有了 ...

Global site tag (gtag.js) - Google Analytics