📄 glllsound.as
字号:
package com.ll19.sound {
import flash.display.MovieClip;
import flash.events.Event;
import flash.events.IOErrorEvent;
import flash.events.ProgressEvent;
import flash.media.Sound;
import flash.media.SoundChannel;
import flash.media.SoundLoaderContext;
import flash.media.SoundTransform;
import flash.net.URLRequest;
import com.ll19.util.GlllStringUtil;
import com.ll19.util.GlllToolTip;
import com.ll19.util.map.IMap;
/**
* - GL'LL. -
*
* 声音类
*
* @author <a href="http://www.LL19.com/">LL19.com</a>
*
*/
public class GlllSound extends Sound {
public static var myChannel:SoundChannel;
public static var mySound:Sound = null;
public static var myLoaderContext:SoundLoaderContext = null;
public static var myTransform:SoundTransform = null;
public static var myReq:URLRequest;
private static var myWave:GlllSoundWave = null;
private static var myLrc:GlllLrc = null;
private static var songTotal:Number = 0;
private static var thisNum:Number = 0;
private static var playInfo:String = "";
private static var playTitle:String = "";
private static var myObject:MovieClip = null;
private static var map:IMap = null;
private static var ITip:GlllToolTip = null;
private static var IButton:Object = null;
private static var listTarget:MovieClip = null;
private static var volume:Number = 1;
public static var myPosition:Number = 0;
function GlllSound() {
}
/**
* @param lrcButton 歌词显示的影片
* @param Lyricsitems LRC影片
* @param myMap 解析之后的XML
* @param myTip 提示工具类
* @param num 当前的歌曲ID
* @param target 正在播放的歌曲影片
* @param thisObject this
* @param waveTarget 波谱所在的影片位置
*/
public static function soundPlay(myMap:IMap,num:Number,waveTarget:MovieClip,thisObject:MovieClip,myTip:GlllToolTip,lrcButton:Object,Lyricsitems:MovieClip,target:MovieClip):void {
if (myObject != null) {
myObject = null;
}
myObject = thisObject;
if (map != null) {
map = null;
}
map = myMap;
if (ITip != null) {
ITip = null;
}
ITip = myTip;
if (IButton != null) {
IButton = null;
}
IButton = lrcButton;
if (listTarget != null) {
listTarget = null;
}
listTarget = target;
songTotal = Number(myMap.get("songTotal"));
thisNum = num;
if(mySound != null) {
myChannel.stop();
try {
//mySound.close();
}catch(e:Error) {
throw e;
}
mySound = null;
}
if (myReq != null) {
myReq = null;
}
mySound = new GlllSound();
myReq = new URLRequest(myMap.get("urlList")[num]);
if (myLoaderContext != null) {
myLoaderContext = null;
}
myLoaderContext = new SoundLoaderContext();
myLoaderContext.bufferTime = 10000;
mySound.load(myReq, myLoaderContext);
if (myChannel != null) {
myChannel = null;
}
myChannel = mySound.play(myPosition);
myPosition = 0;
thisObject.button525.button5z.width = 1;
if (myTransform != null) {
myTransform = null;
}
myTransform = myChannel.soundTransform;
myTransform.volume = volume;
myChannel.soundTransform = myTransform;
myChannel.addEventListener(Event.SOUND_COMPLETE, soundCompleteHandler);
thisObject.addEventListener(Event.ENTER_FRAME, playInfoTime);
if (myWave != null) {
myWave.removeListener = true;
myWave = null;
}
if (myLrc != null) {
myLrc.removeListener = true;
myLrc = null;
}
myWave = new GlllSoundWave(waveTarget);
myLrc = new GlllLrc(myMap.get("lrcList")[num], Lyricsitems, myMap.get("typeList")[num], myMap.get("fontList")[num], myTip, lrcButton);
function soundCompleteHandler(e:Event):void {
e.currentTarget.removeEventListener(Event.SOUND_COMPLETE, soundCompleteHandler);
thisNum == Number(songTotal - 1) ? thisNum = 0 : thisNum++;
removeListener();
myPosition = 0;
soundPlay(myMap, thisNum, waveTarget, thisObject, myTip, lrcButton, Lyricsitems, target);
MovieClip(target.getChildByName("playing")).musicTitle.htmlText = "<b><u>" + MovieClip(target.getChildByName("list" + thisNum.toString())).musicTitle.text + "</u></b>";
MovieClip(target.getChildByName("playing")).musicTitle.textColor = "0xCC0000";
MovieClip(target.getChildByName("playing")).musicTitle.backgroundColor = "0xFFFFFF";
MovieClip(target.getChildByName("playing")).x = MovieClip(target.getChildByName("list" + thisNum.toString())).x;
MovieClip(target.getChildByName("playing")).y = MovieClip(target.getChildByName("list" + thisNum.toString())).y;
MovieClip(target.getChildByName("playing")).visible = true;
}
thisObject.button1.gotoAndStop(1);
thisObject.button2.gotoAndStop(1);
}
public static function removeListener():void {
myObject.removeEventListener(Event.ENTER_FRAME, playInfoTime);
}
public static function playInfoTime(event:Event):void {
if (String(map.get("titleList")[thisNum]).length > 12) {
playTitle = String(map.get("titleList")[thisNum]).substr(0, 9) + "...";
}
else {
playTitle = String(map.get("titleList")[thisNum]);
}
myObject.button525.button5z.width = Number(mySound.bytesLoaded) / Number(mySound.bytesTotal) * 217;
playInfo = GlllStringUtil.getUnitTransform(mySound.bytesLoaded) + "/" + GlllStringUtil.getUnitTransform(mySound.bytesTotal) + " ( <font color=\"#CC0000\">" + int(Number(mySound.bytesLoaded) / Number(mySound.bytesTotal) * 100) + "%</font> ) | -= <u> " + (thisNum + 1).toString() + ". " + playTitle + "</u> =-";
myObject.button525.button5z1.width = Number(myChannel.position) / (Number(mySound.bytesTotal) * mySound.length / Number(mySound.bytesLoaded)) * 217;
myObject.button525.button5a.x = Number(myChannel.position) / (Number(mySound.bytesTotal) * mySound.length / Number(mySound.bytesLoaded)) * 217;
myObject.playInfo.htmlText = "* <font color=\"#CC0000\">GL`LL.</font> | " + GlllStringUtil.convertMillToTime(myChannel.position) + " / " + GlllStringUtil.convertMillToTime(Number(mySound.bytesTotal) * mySound.length / Number(mySound.bytesLoaded)) + "- " + playInfo;
}
/**
* 继续播放
*/
public static function playMusic():void {
if(mySound != null && myPosition != 0) {
removeListener();
soundPlay(map, thisNum, myObject.zwave.z, myObject, ITip, IButton, myObject.Lyricsitems, listTarget);
MovieClip(listTarget.getChildByName("playing")).musicTitle.htmlText = "<b><u>" + MovieClip(listTarget.getChildByName("list" + thisNum.toString())).musicTitle.text + "</u></b>";
MovieClip(listTarget.getChildByName("playing")).musicTitle.textColor = "0xCC0000";
MovieClip(listTarget.getChildByName("playing")).musicTitle.backgroundColor = "0xFFFFFF";
MovieClip(listTarget.getChildByName("playing")).x = MovieClip(listTarget.getChildByName("list" + thisNum.toString())).x;
MovieClip(listTarget.getChildByName("playing")).y = MovieClip(listTarget.getChildByName("list" + thisNum.toString())).y;
MovieClip(listTarget.getChildByName("playing")).visible = true;
}
}
/**
* 根据时间继续播放
*/
public static function playMusicTime(time:Number):void {
if(mySound != null && myPosition != 0) {
myPosition = time;
removeListener();
soundPlay(map, thisNum, myObject.zwave.z, myObject, ITip, IButton, myObject.Lyricsitems, listTarget);
MovieClip(listTarget.getChildByName("playing")).musicTitle.htmlText = "<b><u>" + MovieClip(listTarget.getChildByName("list" + thisNum.toString())).musicTitle.text + "</u></b>";
MovieClip(listTarget.getChildByName("playing")).musicTitle.textColor = "0xCC0000";
MovieClip(listTarget.getChildByName("playing")).musicTitle.backgroundColor = "0xFFFFFF";
MovieClip(listTarget.getChildByName("playing")).x = MovieClip(listTarget.getChildByName("list" + thisNum.toString())).x;
MovieClip(listTarget.getChildByName("playing")).y = MovieClip(listTarget.getChildByName("list" + thisNum.toString())).y;
MovieClip(listTarget.getChildByName("playing")).visible = true;
}
}
/**
* 改变音量
*/
public static function setVolume(num:Number):void {
if(mySound != null) {
volume = num;
myTransform.volume = volume;
myChannel.soundTransform = myTransform;
}
}
/**
* 暂停播放
*/
public static function stopMusic():void {
if(mySound != null) {
myPosition = myChannel.position;
myChannel.stop();
}
}
/**
* 停止播放
*/
public static function closeMusic():void {
if(mySound != null) {
myPosition = 0;
myChannel.stop();
}
}
/**
* 播放下一首
*/
public static function playNextMusic():void {
if(mySound != null) {
removeListener();
thisNum == Number(songTotal - 1) ? thisNum = 0 : thisNum++;
myPosition = 0;
soundPlay(map, thisNum, myObject.zwave.z, myObject, ITip, IButton, myObject.Lyricsitems, listTarget);
MovieClip(listTarget.getChildByName("playing")).musicTitle.htmlText = "<b><u>" + MovieClip(listTarget.getChildByName("list" + thisNum.toString())).musicTitle.text + "</u></b>";
MovieClip(listTarget.getChildByName("playing")).musicTitle.textColor = "0xCC0000";
MovieClip(listTarget.getChildByName("playing")).musicTitle.backgroundColor = "0xFFFFFF";
MovieClip(listTarget.getChildByName("playing")).x = MovieClip(listTarget.getChildByName("list" + thisNum.toString())).x;
MovieClip(listTarget.getChildByName("playing")).y = MovieClip(listTarget.getChildByName("list" + thisNum.toString())).y;
MovieClip(listTarget.getChildByName("playing")).visible = true;
}
}
/**
* 播放前一首
*/
public static function playPreviousMusic():void {
if(mySound != null) {
removeListener();
thisNum == 0 ? thisNum = Number(songTotal - 1) : thisNum--;
myPosition = 0;
soundPlay(map, thisNum, myObject.zwave.z, myObject, ITip, IButton, myObject.Lyricsitems, listTarget);
MovieClip(listTarget.getChildByName("playing")).musicTitle.htmlText = "<b><u>" + MovieClip(listTarget.getChildByName("list" + thisNum.toString())).musicTitle.text + "</u></b>";
MovieClip(listTarget.getChildByName("playing")).musicTitle.textColor = "0xCC0000";
MovieClip(listTarget.getChildByName("playing")).musicTitle.backgroundColor = "0xFFFFFF";
MovieClip(listTarget.getChildByName("playing")).x = MovieClip(listTarget.getChildByName("list" + thisNum.toString())).x;
MovieClip(listTarget.getChildByName("playing")).y = MovieClip(listTarget.getChildByName("list" + thisNum.toString())).y;
MovieClip(listTarget.getChildByName("playing")).visible = true;
}
}
/**
* 关闭音量
*/
public static function closeVolume():void {
if(mySound != null && myTransform.volume != 0) {
volume = myTransform.volume;
myTransform.volume = 0;
myChannel.soundTransform = myTransform;
}
}
/**
* 打开音量
*/
public static function openVolume():void {
if(mySound != null) {
myTransform.volume = volume;
myChannel.soundTransform = myTransform;
}
}
/**
* 改变波谱类暂未实现
* 以后会加入SoundMixer.computeSpectrum()方法的波形
*/
public static function changeMusicWave():void {
trace("changeMusicWave");
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -