From b10d320f6683ecfa2c3896f5da9bd9fbcd47ebaf Mon Sep 17 00:00:00 2001 From: Neimheadh Date: Sun, 7 Aug 2016 21:27:13 +0200 Subject: [PATCH 1/2] Fix mtasc type compilation errors in -strict mode --- build.xml | 46 +- classes/ATemplate.as | 58 +- template_default/player_mp3.swf | Bin 5282 -> 5260 bytes template_js/player_mp3_js.swf | Bin 2823 -> 2822 bytes template_maxi/TemplateMaxi.as | 1241 +++++++++++++++++---------- template_maxi/player_mp3_maxi.swf | Bin 6887 -> 9329 bytes template_mini/player_mp3_mini.swf | Bin 3136 -> 3125 bytes template_multi/TemplateMulti.as | 554 ++++++------ template_multi/player_mp3_multi.swf | Bin 9310 -> 9329 bytes 9 files changed, 1146 insertions(+), 753 deletions(-) diff --git a/build.xml b/build.xml index 918aba0..216b6ed 100644 --- a/build.xml +++ b/build.xml @@ -5,55 +5,55 @@ - - + - - + - - + - - + - - + - - + + @@ -71,4 +71,4 @@ - \ No newline at end of file + diff --git a/classes/ATemplate.as b/classes/ATemplate.as index 20b1726..7f26cb5 100644 --- a/classes/ATemplate.as +++ b/classes/ATemplate.as @@ -1,4 +1,4 @@ -/* +/* Version: MPL 1.1 The contents of this file are subject to the Mozilla Public License @@ -15,32 +15,35 @@ The Original Code is mp3player (http://code.google.com/p/mp3player/). The Initial Developer of the Original Code is neolao (neolao@gmail.com). */ -/** +/** * Classe abstraite pour un thème - * - * @author neolao - * @version 0.9 (02/04/2006) - * @license http://creativecommons.org/licenses/by-sa/2.5/ - */ + * + * @author neolao + * @version 0.9 (02/04/2006) + * @license http://creativecommons.org/licenses/by-sa/2.5/ + */ class ATemplate { // ------------------------------ VARIABLES -------------------------------- /** - * L'instance du lecteur */ + * L'instance du lecteur + */ public var player:PlayerBasic; /** - * Les raccourcis clavier */ + * Les raccourcis clavier + */ private var _shortcuts:Array; - + /*============================= CONSTRUCTEUR =============================*/ /*========================================================================*/ /** - * Initialisation */ + * Initialisation + */ private function ATemplate() { this._shortcuts = new Array(); this._initKey(); - + if (_global._accProps == undefined) { _global._accProps = new Object(); } @@ -48,15 +51,16 @@ class ATemplate } /*======================= FIN = CONSTRUCTEUR = FIN =======================*/ /*========================================================================*/ - + /*=========================== METHODES PRIVEES ===========================*/ /*========================================================================*/ /** - * Initialisation du gestionnaire de clavier */ + * Initialisation du gestionnaire de clavier + */ private function _initKey() { var o:Object = new Object(); - o.onKeyUp = this.delegate(this, function() + o.onKeyUp = this.delegate(this, function() { if (this._shortcuts[Key.getCode()]) { this._shortcuts[Key.getCode()](); @@ -66,15 +70,17 @@ class ATemplate } /** * Ajouter un raccourci clavier - * - * @param pKeyCode Le code de la touche * @param pFunction La fonction à exécuter */ + * + * @param pKeyCode Le code de la touche + * @param pFunction La fonction à exécuter + */ private function _addShortcut(pKeyCode:Number, pFunction:Function) { this._shortcuts[pKeyCode] = pFunction; } /*===================== FIN = METHODES PRIVEES = FIN =====================*/ /*========================================================================*/ - + /*========================== METHODES PUBLIQUES ==========================*/ /*========================================================================*/ /** @@ -106,29 +112,29 @@ class ATemplate */ public function startLoading() { - + } /** * Délégation de fonction - * + * * @param pTarget La cible * @param pFunc La fonction * @return La même fonction avec un scope fixe */ public function delegate(pTarget:Object, pFunc:Function):Function { - var f:Function = function() + var f:Function = function():Object { - var target = arguments.callee.target; - var func = arguments.callee.func; + var target:String = arguments.callee.target; + var func:Function = arguments.callee.func; return func.apply(target); }; - + f.target = pTarget; f.func = pFunc; - + return f; } /*==================== FIN = METHODES PUBLIQUES = FIN ====================*/ /*========================================================================*/ -} \ No newline at end of file +} diff --git a/template_default/player_mp3.swf b/template_default/player_mp3.swf index 0077527af89f4475246a20d90651cdfe99861829..36c504cacdd0bb25c84f4d7948af4265d7964a92 100644 GIT binary patch literal 5260 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 SSd;ue00030{{sMWGQ7@D@Kcol literal 5282 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 o)n@DsJU-sWT?e`^{~sQtj){#_7-DdHb%7 diff --git a/template_js/player_mp3_js.swf b/template_js/player_mp3_js.swf index 08309986334c22677c4c0da0a215be97fcedd340..090aaa6e83d192625d282c5500c929bdf3f25b81 100644 GIT binary patch literal 2822 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 Y`NVP7$zuTn_#XfO0RR6304bM_!?8`0xc~qF literal 2823 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 ZDASajvhU;zIE009600|31EjP$BKdG7!K diff --git a/template_maxi/TemplateMaxi.as b/template_maxi/TemplateMaxi.as index 9baab12..33f11e0 100644 --- a/template_maxi/TemplateMaxi.as +++ b/template_maxi/TemplateMaxi.as @@ -1,4 +1,4 @@ -/* +/* Version: MPL 1.1 The contents of this file are subject to the Mozilla Public License @@ -15,23 +15,29 @@ The Original Code is mp3player (http://code.google.com/p/mp3player/). The Initial Developer of the Original Code is neolao (neolao@gmail.com). */ -/** - * Thème avec plein de choses pour le lecteur mp3 - * - * @author neolao - * @version 0.6.2 (11/09/2008) +/** + * Template for several mp3 + * + * @author neolao + * @version 1.2.1 (04/01/2008) * @license http://creativecommons.org/licenses/by-sa/3.0/deed.fr - */ -class TemplateMaxi extends ATemplate + */ +class TemplateMulti extends ATemplate { // ------------------------------ VARIABLES -------------------------------- /** - * Largeur du thème */ + * Template width + */ private var _width:Number = 200; /** - * Hauteur du thème */ - private var _height:Number = 20; - + * Template height + */ + private var _height:Number = 100; + /** + * Toolbar height + */ + private var _playerHeight:Number = 20; + private var _backgroundSkin:String; private var _backgroundColor:Number; private var _backgroundColor1:Number = 0x7c7c7c; @@ -43,60 +49,78 @@ class TemplateMaxi extends ATemplate private var _sliderOverColor:Number = 0xeeee00; private var _textColor:Number = 0xffffff; private var _loadingColor:Number = 0xffff00; - private var _showStop:Boolean = false; + private var _playlistColor:Number = 0x000000; + private var _playlistAlpha:Number = 50; + private var _currentMp3Color:Number = 0xffff00; + private var _scrollbarColor:Number = 0xffffff; + private var _scrollbarOverColor:Number = 0xffff00; + private var _showList:Boolean = true; + private var _showSlider:Boolean = true; + private var _title:Array; private var _showInfo:Boolean = false; private var _showVolume:Boolean = false; - private var _showSlider:Boolean = true; private var _volume:Number = 100; private var _volumeMax:Number = 200; private var _showLoading:String = "autohide"; // always, autohide, never - + private var _showPlaylistNumbers:Boolean = true; + public var buttonWidth:Number = 26; public var volumeWidth:Number = 30; public var volumeHeight:Number = 6; public var sliderWidth:Number = 20; public var sliderHeight:Number = 10; - + private var _target:MovieClip = _root; private var _backgroundInstance:MovieClip; + private var _previousButtonInstance:MovieClip; private var _playButtonInstance:MovieClip; private var _pauseButtonInstance:MovieClip; private var _stopButtonInstance:MovieClip; private var _infoButtonInstance:MovieClip; private var _infoPanel:MovieClip; + private var _nextButtonInstance:MovieClip; private var _volumeButtonInstance:MovieClip; private var _separatorsInstance:MovieClip; private var _sliderInstance:MovieClip; private var _loadingInstance:MovieClip; - + private var _playlistInstance:MovieClip; + private var _scrollbarInstance:MovieClip; + + private var _currentIndex:Number = 0; + /*============================= CONSTRUCTEUR =============================*/ /*========================================================================*/ /** - * Initialisation - * - * @param pConfig La configuration par défaut + * Constructor */ - public function TemplateMaxi(pConfig:Object) + public function TemplateMulti() { super(); - - this._initVars(pConfig); + + // Initialisation du Stage + Stage.scaleMode = "noScale"; + Stage.align = "TL"; + + this._initVars(); + + if (!this._showList) { + this._height = this._playerHeight; + } + this._initBackground(); + this._initPreviousButton(); this._initPlayButton(); this._initPauseButton(); this._initStopButton(); this._initInfoButton(); + this._initNextButton(); this._initVolumeButton(); - - var vMarginSlider:Number = this.buttonWidth; - var vSeparators:Array = new Array(); - if (this._showSlider) { - vSeparators.push(this.buttonWidth); - } - if (this._showStop) { - vMarginSlider += this.buttonWidth; - vSeparators.push(this.buttonWidth); - } + + var vMarginSlider:Number = this.buttonWidth*4; + var vSeparators:Array = [this.buttonWidth, + this.buttonWidth, + this.buttonWidth, + this.buttonWidth]; if (this._showInfo) { vMarginSlider += this.buttonWidth; vSeparators.push(this.buttonWidth); @@ -105,11 +129,30 @@ class TemplateMaxi extends ATemplate vMarginSlider += this.volumeWidth; vSeparators.push(this.volumeWidth); } - this._initSlider(vMarginSlider); + if (this._showSlider) { + this._initSlider(vMarginSlider); + } else { + vMarginSlider -= this.buttonWidth; + vSeparators.pop(); + } this._createSeparators(vSeparators); - + + // Si la playlist est générée avec un fichier + // Alors il ne faut pas encore créer l'affichage de la playlist + if (_root.playlist != undefined) { + this._loadPlaylist(_root.playlist); + } else { + // Use postcast rss + if (_root.playlistrss != undefined) { + this._loadPlaylistRss(_root.playlistrss); + } else { + this._initPlaylist(); + } + } + + this._initInfoPanel(); - + // Raccourcis clavier var vPlayPause:Function = this.delegate(this, function() { @@ -156,6 +199,20 @@ class TemplateMaxi extends ATemplate { this.player.setPosition(this.player.getPosition() + 5000); })); + // touche flèche haut + this._addShortcut(38, this.delegate(this, function() + { + if (this.player.hasPrevious) { + this.previousRelease(); + } + })); + // touche flèche bas + this._addShortcut(40, this.delegate(this, function() + { + if (this.player.hasNext) { + this.nextRelease(); + } + })); // touche "-" this._addShortcut(109, vDecreaseVolume); this._addShortcut(189, vDecreaseVolume); @@ -167,16 +224,13 @@ class TemplateMaxi extends ATemplate { this.infoRelease(); })); - - - // Update accessibility properties - Accessibility.updateProperties(); } /** - * Lancé par mtasc + * Launched by mtasc */ static function main():Void { + // On vérifie s'il y a un fichier de configuration à charger if (_root.config != undefined) { // Fichier de configuration texte @@ -185,8 +239,8 @@ class TemplateMaxi extends ATemplate if (data != undefined) { data = data.split("\r\n").join("\n"); var newdata:Array = data.split("\n"); - - for (var i=0; i 0) { // On peut scroller this.info_txt.text += sep; var textLength:Number = this.info_txt.length; - + this.info_txt.text = this.info_txt.text.substring(this.scrollMemo, textLength) + this.info_txt.text.substring(0, this.scrollMemo - 1); if (++this.waitScroll > 5) { this.scrollMemo += 1; @@ -644,6 +816,37 @@ class TemplateMaxi extends ATemplate }; } } + /** + * Initialisation du bouton Next + */ + private function _initNextButton() + { + // Création + if (this._nextButtonInstance == undefined) { + this._nextButtonInstance = this._target.createEmptyMovieClip("next_btn", this._target.getNextHighestDepth()); + this._initButton(this._nextButtonInstance); + } + + // Position + this._nextButtonInstance._x = (this._showInfo)?this.buttonWidth*4:this.buttonWidth*3; + + // Action + this._nextButtonInstance.area_mc.onRelease = this.delegate(this, this.nextRelease); + + // Icone + this._nextButtonInstance.icon_mc.beginFill(this._buttonColor); + this._nextButtonInstance.icon_mc.lineTo(0, 8); + this._nextButtonInstance.icon_mc.lineTo(6, 4); + this._nextButtonInstance.icon_mc.endFill(); + this._nextButtonInstance.icon_mc.moveTo(6, 0); + this._nextButtonInstance.icon_mc.beginFill(this._buttonColor); + this._nextButtonInstance.icon_mc.lineTo(8, 0); + this._nextButtonInstance.icon_mc.lineTo(8, 8); + this._nextButtonInstance.icon_mc.lineTo(6, 8); + this._nextButtonInstance.icon_mc.endFill(); + this._nextButtonInstance.icon_mc._y = this._playerHeight/2 - this._nextButtonInstance.icon_mc._height/2; + this._nextButtonInstance.icon_mc._x = this.buttonWidth/2 - this._nextButtonInstance.icon_mc._width/2; + } /** * Initialisation du bouton Volume */ @@ -652,20 +855,14 @@ class TemplateMaxi extends ATemplate if (this._showVolume) { this._volumeButtonInstance = this._target.createEmptyMovieClip("volume_btn", this._target.getNextHighestDepth()); this._initButton(this._volumeButtonInstance, this.volumeWidth); - - this._volumeButtonInstance._x = this.buttonWidth; - if (this._showStop) { - this._volumeButtonInstance._x += this.buttonWidth; - } - if (this._showInfo) { - this._volumeButtonInstance._x += this.buttonWidth; - } - - + + // Position + this._volumeButtonInstance._x = (this._showInfo)?this.buttonWidth*5:this.buttonWidth*4; + this._volumeButtonInstance.area_mc.onPress = this.delegate(this, this._volumePress); this._volumeButtonInstance.area_mc.onRelease = this.delegate(this, this._volumeRelease); this._volumeButtonInstance.area_mc.onReleaseOutside = this.delegate(this, this._volumeRelease); - + // icone fond var vIconBackground:MovieClip = this._volumeButtonInstance.icon_mc.createEmptyMovieClip("background_mc", 1); vIconBackground.beginFill(this._buttonColor, 25); @@ -673,15 +870,16 @@ class TemplateMaxi extends ATemplate vIconBackground.lineTo(this.volumeWidth - 8, this.volumeHeight); vIconBackground.lineTo(this.volumeWidth - 8, 0); vIconBackground.endFill(); - vIconBackground._y = this._height/2 - vIconBackground._height/2; + vIconBackground._y = this._playerHeight/2 - vIconBackground._height/2; vIconBackground._x = this.volumeWidth/2 - vIconBackground._width/2; - + // icone this._updateVolume(); } } /** - * Mise à jour du bouton Volume */ + * Mise à jour du bouton Volume + */ private function _updateVolume() { var vIcon:MovieClip; @@ -691,14 +889,14 @@ class TemplateMaxi extends ATemplate vIcon = this._volumeButtonInstance.icon_mc.current_mc; } vIcon.clear(); - + if (this._volume > this._volumeMax) { this._volume = this._volumeMax; } - + var vWidth:Number = (this.volumeWidth - 8) * this._volume / this._volumeMax; var vRatio:Number = this._volume / this._volumeMax; - + vIcon.beginFill(this._buttonColor); vIcon.moveTo(0, this.volumeHeight); vIcon.lineTo(vWidth, this.volumeHeight); @@ -708,7 +906,8 @@ class TemplateMaxi extends ATemplate vIcon._x = vIcon._parent.background_mc._x; } /** - * Le enterFrame pendant l'appui du bouton Volume */ + * Le enterFrame pendant l'appui du bouton Volume + */ private function _volumeEnterFrame() { var xmouse:Number = this._volumeButtonInstance.icon_mc.current_mc._xmouse; @@ -719,173 +918,355 @@ class TemplateMaxi extends ATemplate if (xmouse > max) { xmouse = max; } - + var volume:Number = xmouse * this._volumeMax / max; this.setVolume(volume); } /** - * On appuie sur le bouton Volume */ + * On appuie sur le bouton Volume + */ private function _volumePress() { this._volumeButtonInstance.onEnterFrame = this.delegate(this, this._volumeEnterFrame); } /** - * On relâche le bouton Volume */ + * On relâche le bouton Volume + */ private function _volumeRelease() { delete this._volumeButtonInstance.onEnterFrame; } /** * Initialisation de la barre - * + * * @param pMargin La marge gauche de la barre */ private function _initSlider(pMargin:Number) { - this._sliderInstance = this._target.createEmptyMovieClip("slider_mc", this._target.getNextHighestDepth()); - - if (this._showSlider) { - - // calcul de la taille - var vMargin:Number = pMargin; - vMargin += 10; - - this._sliderInstance._x = vMargin; - this._sliderInstance.width = this._width - vMargin - 10; - - // barre - this._sliderInstance.barBg_mc.removeMovieClip(); - var vBarBg:MovieClip = this._sliderInstance.createEmptyMovieClip("barBg_mc", this._sliderInstance.getNextHighestDepth()); - vBarBg.beginFill(0xcccccc, 25); - vBarBg.lineTo(this._sliderInstance.width, 0); - vBarBg.lineTo(this._sliderInstance.width, 1); - vBarBg.lineTo(0, 1); - vBarBg.endFill(); - vBarBg.beginFill(0x666666, 25); - vBarBg.moveTo(0, 0); - vBarBg.lineTo(0, -1); - vBarBg.lineTo(this._sliderInstance.width, -1); - vBarBg.lineTo(this._sliderInstance.width, 0); - vBarBg.endFill(); - vBarBg._y = this._height / 2; - - - // barre de chargement - this._loadingInstance = this._sliderInstance.createEmptyMovieClip("loading_mc", this._sliderInstance.getNextHighestDepth()); - this._loadingInstance.beginFill(this._loadingColor, 75); - this._loadingInstance.moveTo(0, -1) - this._loadingInstance.lineTo(this._sliderInstance.width, -1); - this._loadingInstance.lineTo(this._sliderInstance.width, 1); - this._loadingInstance.lineTo(0, 1); - this._loadingInstance.endFill(); - this._loadingInstance._y = this._height / 2; - this._loadingInstance._xscale = 0; - this._loadingInstance._visible = false; - - - // barre slider - var vSlider:MovieClip = this._sliderInstance.createEmptyMovieClip("bar_mc", this._sliderInstance.getNextHighestDepth()); - vSlider.parent = this; - vSlider.margin = vMargin; - vSlider.width = this.sliderWidth; - vSlider.barWidth = this._sliderInstance.width; - vSlider.color = new Color(vSlider); - vSlider.tabEnabled = false; - if (vSlider._accProps == undefined) { - vSlider._accProps = new Object(); - } - vSlider._accProps.silent = true; - vSlider._accProps.name = "Slider"; - vSlider.onRollOver = function() - { - this.color.setRGB(this.parent._sliderOverColor); - }; - vSlider.onRollOut = function() - { - var transform:Object = {ra: 100, rb: 0, ga: 100, gb: 0, ba: 100, bb: 0, aa: 100, ab: 0}; - this.color.setTransform(transform); - }; - vSlider.onPress = function() - { - this.startDrag(false, 0, this._y, this.barWidth - this.width, this._y); - delete this.parent._sliderInstance.onEnterFrame; - }; - vSlider.onRelease = vSlider.onReleaseOutside = function() - { - this.stopDrag(); - var position:Number = this._x / (this.barWidth - this.width) * this.parent.player.getDuration(); - this.parent.player.setPosition(position); - if (this.parent.player.isPlaying) { - this.parent.playRelease(); - } - }; - - vSlider.beginGradientFill("linear", - [this._sliderColor1, this._sliderColor2], - [100,100], - [50,150], - {matrixType:"box", x:0, y:0, w:this.sliderWidth, h:this.sliderHeight, r:Math.PI/2}); - vSlider.moveTo(0, 4); - vSlider.lineTo(0, this.sliderHeight - 4); - vSlider.curveTo(0, this.sliderHeight, 4, this.sliderHeight); - vSlider.lineTo(this.sliderWidth - 4, this.sliderHeight); - vSlider.curveTo(this.sliderWidth, this.sliderHeight, this.sliderWidth, this.sliderHeight - 4); - vSlider.lineTo(this.sliderWidth, 4); - vSlider.curveTo(this.sliderWidth, 0, this.sliderWidth - 4, 0); - vSlider.lineTo(4, 0); - vSlider.curveTo(0, 0, 0, 4); - vSlider.endFill(); - vSlider._y = this._height/2 - this.sliderHeight / 2; + if (this._sliderInstance == undefined) { + this._sliderInstance = this._target.createEmptyMovieClip("slider_mc", this._target.getNextHighestDepth()); } + + // calcul de la taille + var vMargin:Number = pMargin; + vMargin += 10; + + this._sliderInstance._x = vMargin; + this._sliderInstance.width = this._width - vMargin - 10; + + // barre + this._sliderInstance.barBg_mc.removeMovieClip(); + var vBarBg:MovieClip = this._sliderInstance.createEmptyMovieClip("barBg_mc", this._sliderInstance.getNextHighestDepth()); + vBarBg.beginFill(0xcccccc, 25); + vBarBg.lineTo(this._sliderInstance.width, 0); + vBarBg.lineTo(this._sliderInstance.width, 1); + vBarBg.lineTo(0, 1); + vBarBg.endFill(); + vBarBg.beginFill(0x666666, 25); + vBarBg.moveTo(0, 0); + vBarBg.lineTo(0, -1); + vBarBg.lineTo(this._sliderInstance.width, -1); + vBarBg.lineTo(this._sliderInstance.width, 0); + vBarBg.endFill(); + vBarBg._y = this._playerHeight / 2; + + + // barre de chargement + this._loadingInstance = this._sliderInstance.createEmptyMovieClip("loading_mc", this._sliderInstance.getNextHighestDepth()); + this._loadingInstance.beginFill(this._loadingColor, 75); + this._loadingInstance.moveTo(0, -1) + this._loadingInstance.lineTo(this._sliderInstance.width, -1); + this._loadingInstance.lineTo(this._sliderInstance.width, 1); + this._loadingInstance.lineTo(0, 1); + this._loadingInstance.endFill(); + this._loadingInstance._y = this._playerHeight / 2; + this._loadingInstance._xscale = 0; + this._loadingInstance._visible = false; + + + // barre slider + var vSlider:MovieClip = this._sliderInstance.createEmptyMovieClip("bar_mc", this._sliderInstance.getNextHighestDepth()); + vSlider.parent = this; + vSlider.margin = vMargin; + vSlider.width = this.sliderWidth; + vSlider.barWidth = this._sliderInstance.width; + vSlider.color = new Color(vSlider); + vSlider.onRollOver = function() + { + this.color.setRGB(this.parent._sliderOverColor); + }; + vSlider.onRollOut = function() + { + var transform:Object = {ra: 100, rb: 0, ga: 100, gb: 0, ba: 100, bb: 0, aa: 100, ab: 0}; + this.color.setTransform(transform); + }; + vSlider.onPress = function() + { + this.startDrag(false, 0, this._y, this.barWidth - this.width, this._y); + delete this.parent._sliderInstance.onEnterFrame; + }; + vSlider.onRelease = vSlider.onReleaseOutside = function() + { + this.stopDrag(); + var position:Number = this._x / (this.barWidth - this.width) * this.parent.player.getDuration(); + this.parent.player.setPosition(position); + if (this.parent.player.isPlaying) { + this.parent.playRelease(); + } + }; + + vSlider.beginGradientFill("linear", + [this._sliderColor1, this._sliderColor2], + [100,100], + [50,150], + {matrixType:"box", x:0, y:0, w:this.sliderWidth, h:this.sliderHeight, r:Math.PI/2}); + vSlider.moveTo(0, 4); + vSlider.lineTo(0, this.sliderHeight - 4); + vSlider.curveTo(0, this.sliderHeight, 4, this.sliderHeight); + vSlider.lineTo(this.sliderWidth - 4, this.sliderHeight); + vSlider.curveTo(this.sliderWidth, this.sliderHeight, this.sliderWidth, this.sliderHeight - 4); + vSlider.lineTo(this.sliderWidth, 4); + vSlider.curveTo(this.sliderWidth, 0, this.sliderWidth - 4, 0); + vSlider.lineTo(4, 0); + vSlider.curveTo(0, 0, 0, 4); + vSlider.endFill(); + vSlider._y = this._playerHeight/2 - this.sliderHeight / 2; } /** * Chargement */ - private function _loading(){ + private function _loading() + { var objLoading:Object = this.player.getLoading(); - this._loadingInstance._xscale = (objLoading.percent >= 1)?objLoading.percent:0; - if (objLoading.percent == 100) { + this._loadingInstance._xscale = (objLoading.percent >= 1)?objLoading.percent:0; + if (objLoading.percent == 100) { if (this._showLoading != "always") { this._loadingInstance._visible = false; } - delete this._loadingInstance.onEnterFrame; - } - } - /** - * Le enterFrame du slider - */ - private function _sliderEnterFrame() { - var total:Number = 0; - var position:Number = 0; - var threshold:Number = 10; // threshold of the stop detection - - if (this._showSlider) { - total = (this._sliderInstance.loading_mc._visible)?this._sliderInstance.loading_mc._width:this._sliderInstance.width - this.sliderWidth; - position = Math.round(this.player.getPosition()/this.player.getDuration() * total); - this._sliderInstance.bar_mc._x = position; - } else { - total = this.player.getDuration(); - position = this.player.getPosition(); - - threshold = 400; - - // if the duration of the sound is below 2 seconds - if (total < 2000) { - threshold = 800; - } - } - - if (!this.player.isPlaying && Math.abs(total - position) < threshold) { + delete this._loadingInstance.onEnterFrame; + } + } + /** + * Le enterFrame du slider + */ + private function _sliderEnterFrame() + { + var total:Number = (this._sliderInstance.loading_mc._visible)?this._sliderInstance.loading_mc._width:this._sliderInstance.width - this.sliderWidth; + var position:Number = Math.round(this.player.getPosition()/this.player.getDuration() * total); + this._sliderInstance.bar_mc._x = position; + + if (!this.player.isPlaying && position == total) { this.stopRelease(); } + if (this._currentIndex != this.player.index) { + this._currentIndex = this.player.index; + this.updatePlaylist(); + } + } + /** + * Initialisation de la playlist + * @return true + */ + private function _initPlaylist():Boolean + { + var totalMp3:Number = _root.mp3.split("|").length; + var version:String = System.capabilities.version; + if (version.indexOf("MAC") != -1) { + totalMp3++; + } + + // On vérifie si on affiche la playlist ou pas + if (!this._showList) { + return true; + } + + // Création + this._playlistInstance = this._target.createEmptyMovieClip("playlist_mc", this._target.getNextHighestDepth()); + + // Position + this._playlistInstance._y = this._playerHeight; + + // Fond + if (this._backgroundSkin == undefined) { + this._playlistInstance.moveTo(5, 0); + this._playlistInstance.beginFill(this._playlistColor, this._playlistAlpha); + this._playlistInstance.lineTo(this._width - 5, 0); + this._playlistInstance.lineTo(this._width - 5, this._height - this._playerHeight - 5); + this._playlistInstance.lineTo(5, this._height - this._playerHeight - 5); + this._playlistInstance.endFill(); + } + + // Champ de texte + this._playlistInstance.createTextField("list_txt", 1, 5, 0, this._width - 20, this._height - this._playerHeight); + //this._playlistInstance.list_txt.selectable = false; + this._playlistInstance.list_txt.html = true; + + // Remplissage du champ pour vérifier si ca scroll + this._playlistInstance.list_txt.text = ""; + for (var i:Number=0; i 1) { + this._scrollbarInstance = this._playlistInstance.createEmptyMovieClip("scrollbar_mc", 2); + this._scrollbarInstance.beginFill(this._scrollbarColor); + this._scrollbarInstance.lineTo(4, 0); + this._scrollbarInstance.lineTo(4, this._height - this._playerHeight - 5); + this._scrollbarInstance.lineTo(0, this._height - this._playerHeight - 5); + this._scrollbarInstance.endFill(); + this._scrollbarInstance._x = this._width - 10; + this._scrollbarInstance._yscale = (totalMp3 - this._playlistInstance.list_txt.maxscroll + 1)/totalMp3 * 100; + this._scrollbarInstance.max = (this._height - this._playerHeight - 5) - this._scrollbarInstance._height; + this._scrollbarInstance.step = this._scrollbarInstance.max / (this._playlistInstance.list_txt.maxscroll - 1); + this._scrollbarInstance.color = new Color(this._scrollbarInstance); + this._scrollbarInstance.colorOver = this._scrollbarOverColor; + this._scrollbarInstance.onRollOver = function() + { + this.color.setRGB(this.colorOver); + }; + this._scrollbarInstance.onRollOut = function() + { + var transform:Object = {ra: 100, rb: 0, ga: 100, gb: 0, ba: 100, bb: 0, aa: 100, ab: 0}; + this.color.setTransform(transform); + }; + this._scrollbarInstance.onPress = function() + { + this.onEnterFrameAuto = this.onEnterFrame; + this.startDrag(false, this._x, 0, this._x, this.max); + this.onEnterFrame = function() + { + this._parent.list_txt.scroll = Math.floor((this._y+1) / this.step) + 1; + } + } + this._scrollbarInstance.onRelease = this._scrollbarInstance.onReleaseOutside = function() + { + this.stopDrag(); + this.onEnterFrame = this.onEnterFrameAuto; + } + this._scrollbarInstance.onEnterFrame = function() + { + if (this._parent.list_txt.scroll == this._parent.list_txt.maxscroll) { + this._y = this.max; + } else { + this._y = (this._parent.list_txt.scroll - 1) * this.step; + } + } + } + + // Mise à jour de la playlist en permanence + this._playlistInstance.waitScroll = 0; + this._playlistInstance.intervalScroll = 0; + this._playlistInstance.scrollMemo = 0; + this._playlistInstance.onEnterFrame = this.delegate(this, this.updatePlaylist); + + return true; } /*===================== FIN = METHODES PRIVEES = FIN =====================*/ /*========================================================================*/ - + /*========================== METHODES PUBLIQUES ==========================*/ /*========================================================================*/ /** - * Action sur le bouton play */ + * Mise à jour de la playlist + * + * @param pAutoScroll Indique qu'il faut scroller au bon endroit de la liste + */ + public function updatePlaylist(pAutoScroll:Boolean) + { + var text:String = "" + var title_tmp:String; + var color:String = this._textColor.toString(16); + + if (this.player.playlist.length > 0) { + text = ""; + } else { + text = "Liste vide"; + } + + // Génération des pistes + for (var i:Number=0; i"; + text += ""; + if (this._showPlaylistNumbers) { + text += (i+1) + " - "; + } + + // titre de la piste + if (this._title[i] != undefined) { + title_tmp = this._title[i]; + } else { + title_tmp = this.player.playlist[i]; + } + + // Défilement automatique pour la piste sélectionnée + this._playlistInstance.textfield_tmp.text = title_tmp; + if (i == this.player.index && this._playlistInstance.textfield_tmp.maxhscroll > 0) { + // On peut scroller + title_tmp += " - "; + var textLength:Number = title_tmp.length; + + if (++this._playlistInstance.waitScroll < 40) { + this._playlistInstance.intervalScroll = 0; + } + + title_tmp = title_tmp.substring(this._playlistInstance.scrollMemo, textLength) + title_tmp.substring(0, this._playlistInstance.scrollMemo - 1); + if (++this._playlistInstance.intervalScroll > 5) { + this._playlistInstance.scrollMemo += 1; + this._playlistInstance.intervalScroll = 0; + } + this._playlistInstance.scrollMemo = this._playlistInstance.scrollMemo % (textLength); + } + this._playlistInstance.textfield_tmp.text = ""; + + // La fin + text += title_tmp; + text += "\n"; + text += ""; + text += ""; + } + + this._playlistInstance.list_txt.htmlText = text; + + // Scroll automatique sur l'élément + if (pAutoScroll && this._playlistInstance.list_txt.maxscroll > 1) { + this._playlistInstance.list_txt.scroll = this._playlistInstance.list_txt.maxscroll - (this.player.playlist.length - 1 - this.player.index); + } + + // Boutons Previous et Next + this._enableButton(this._nextButtonInstance, this.player.hasNext); + this._enableButton(this._previousButtonInstance, this.player.hasPrevious); + } + /** + * Action sur le bouton Previous + */ + public function previousRelease() + { + this.player.previous(); + + this._currentIndex = this.player.index; + this.updatePlaylist(true); + } + /** + * Action sur le bouton Play + */ public function playRelease() { super.playRelease(); @@ -893,17 +1274,28 @@ class TemplateMaxi extends ATemplate this._enableButton(this._pauseButtonInstance, true); this._enableButton(this._stopButtonInstance, true); this._sliderInstance.onEnterFrame = this.delegate(this, this._sliderEnterFrame); + + this._currentIndex = this.player.index; + + this._playlistInstance.waitScroll = 0; + this._playlistInstance.intervalScroll = 0; + this._playlistInstance.scrollMemo = 0; + this.updatePlaylist(true); } - /** * Action sur le bouton pause + /** + * Action sur le bouton Pause */ public function pauseRelease() { super.pauseRelease(); this._enableButton(this._pauseButtonInstance, false, true); this._enableButton(this._playButtonInstance, true); + + this.updatePlaylist(); } /** - * Action sur le bouton stop */ + * Action sur le bouton Stop + */ public function stopRelease() { super.stopRelease(); @@ -911,13 +1303,13 @@ class TemplateMaxi extends ATemplate this._enableButton(this._pauseButtonInstance, false, true); this._enableButton(this._playButtonInstance, true); delete this._sliderInstance.onEnterFrame; - - if (this._showSlider) { - this._sliderInstance.bar_mc._x = 0; - } + this._sliderInstance.bar_mc._x = 0; + + this.updatePlaylist(); } /** - * Action sur le bouton info */ + * Action sur le bouton info + */ public function infoRelease() { if (this._infoPanel._visible = !this._infoPanel._visible) { @@ -926,11 +1318,22 @@ class TemplateMaxi extends ATemplate delete this._infoPanel.onEnterFrame; } } + /** + * Action sur le bouton Next + */ + public function nextRelease() + { + this.player.next(); + + this._currentIndex = this.player.index; + this.updatePlaylist(true); + } /** * Modifie le volume - * + * * Le maximum est de 200 - * @param pVolume Le nouveau volume */ + * @param pVolume Le nouveau volume + */ public function setVolume(pVolume:Number) { this._volume = pVolume; @@ -950,30 +1353,4 @@ class TemplateMaxi extends ATemplate } /*==================== FIN = METHODES PUBLIQUES = FIN ====================*/ /*========================================================================*/ - - /*========================= CONTROLES JAVASCRIPT =========================*/ - /*========================================================================*/ - public function set jsPlay(n:String) - { - this.playRelease(); - } - public function set jsPause(n:String) - { - this.pauseRelease(); - } - public function set jsStop(n:String) - { - this.stopRelease(); - } - public function set jsVolume(n:String) - { - this.setVolume(Number(n)); - } - public function set jsUrl(n:String) - { - this.player["_firstPlay"] = false; - _root.mp3 = n; - } - /*=================== FIN = CONTROLES JAVASCRIPT = FIN ===================*/ - /*========================================================================*/ -} \ No newline at end of file +} diff --git a/template_maxi/player_mp3_maxi.swf b/template_maxi/player_mp3_maxi.swf index b2fde336551eab9146fcf5e99328700d317523b8..b63f136d364d8a85a953e689d73c7f6c032caa09 100644 GIT binary patch literal 9329 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 aICTw5UDGXsYlQe800030{{sLwIV+2vh&dqu diff --git a/template_multi/TemplateMulti.as b/template_multi/TemplateMulti.as index 2cd1e79..33f11e0 100644 --- a/template_multi/TemplateMulti.as +++ b/template_multi/TemplateMulti.as @@ -1,4 +1,4 @@ -/* +/* Version: MPL 1.1 The contents of this file are subject to the Mozilla Public License @@ -15,26 +15,29 @@ The Original Code is mp3player (http://code.google.com/p/mp3player/). The Initial Developer of the Original Code is neolao (neolao@gmail.com). */ -/** +/** * Template for several mp3 - * - * @author neolao - * @version 1.2.1 (04/01/2008) + * + * @author neolao + * @version 1.2.1 (04/01/2008) * @license http://creativecommons.org/licenses/by-sa/3.0/deed.fr - */ + */ class TemplateMulti extends ATemplate { // ------------------------------ VARIABLES -------------------------------- /** - * Template width */ + * Template width + */ private var _width:Number = 200; /** - * Template height */ + * Template height + */ private var _height:Number = 100; - /** * Toolbar height + /** + * Toolbar height */ private var _playerHeight:Number = 20; - + private var _backgroundSkin:String; private var _backgroundColor:Number; private var _backgroundColor1:Number = 0x7c7c7c; @@ -60,13 +63,13 @@ class TemplateMulti extends ATemplate private var _volumeMax:Number = 200; private var _showLoading:String = "autohide"; // always, autohide, never private var _showPlaylistNumbers:Boolean = true; - + public var buttonWidth:Number = 26; public var volumeWidth:Number = 30; public var volumeHeight:Number = 6; public var sliderWidth:Number = 20; public var sliderHeight:Number = 10; - + private var _target:MovieClip = _root; private var _backgroundInstance:MovieClip; private var _previousButtonInstance:MovieClip; @@ -82,9 +85,9 @@ class TemplateMulti extends ATemplate private var _loadingInstance:MovieClip; private var _playlistInstance:MovieClip; private var _scrollbarInstance:MovieClip; - + private var _currentIndex:Number = 0; - + /*============================= CONSTRUCTEUR =============================*/ /*========================================================================*/ /** @@ -93,17 +96,17 @@ class TemplateMulti extends ATemplate public function TemplateMulti() { super(); - + // Initialisation du Stage Stage.scaleMode = "noScale"; Stage.align = "TL"; - + this._initVars(); - + if (!this._showList) { this._height = this._playerHeight; } - + this._initBackground(); this._initPreviousButton(); this._initPlayButton(); @@ -112,11 +115,11 @@ class TemplateMulti extends ATemplate this._initInfoButton(); this._initNextButton(); this._initVolumeButton(); - + var vMarginSlider:Number = this.buttonWidth*4; - var vSeparators:Array = [this.buttonWidth, - this.buttonWidth, - this.buttonWidth, + var vSeparators:Array = [this.buttonWidth, + this.buttonWidth, + this.buttonWidth, this.buttonWidth]; if (this._showInfo) { vMarginSlider += this.buttonWidth; @@ -133,7 +136,7 @@ class TemplateMulti extends ATemplate vSeparators.pop(); } this._createSeparators(vSeparators); - + // Si la playlist est générée avec un fichier // Alors il ne faut pas encore créer l'affichage de la playlist if (_root.playlist != undefined) { @@ -146,10 +149,10 @@ class TemplateMulti extends ATemplate this._initPlaylist(); } } - - + + this._initInfoPanel(); - + // Raccourcis clavier var vPlayPause:Function = this.delegate(this, function() { @@ -227,7 +230,7 @@ class TemplateMulti extends ATemplate */ static function main():Void { - + // On vérifie s'il y a un fichier de configuration à charger if (_root.config != undefined) { // Fichier de configuration texte @@ -236,8 +239,8 @@ class TemplateMulti extends ATemplate if (data != undefined) { data = data.split("\r\n").join("\n"); var newdata:Array = data.split("\n"); - - for (var i=0; i 0) { // On peut scroller this.info_txt.text += sep; var textLength:Number = this.info_txt.length; - + this.info_txt.text = this.info_txt.text.substring(this.scrollMemo, textLength) + this.info_txt.text.substring(0, this.scrollMemo - 1); if (++this.waitScroll > 5) { this.scrollMemo += 1; @@ -819,16 +823,16 @@ class TemplateMulti extends ATemplate { // Création if (this._nextButtonInstance == undefined) { - this._nextButtonInstance = this._target.createEmptyMovieClip("next_btn", this._target.getNextHighestDepth()); + this._nextButtonInstance = this._target.createEmptyMovieClip("next_btn", this._target.getNextHighestDepth()); this._initButton(this._nextButtonInstance); - } - + } + // Position this._nextButtonInstance._x = (this._showInfo)?this.buttonWidth*4:this.buttonWidth*3; - + // Action this._nextButtonInstance.area_mc.onRelease = this.delegate(this, this.nextRelease); - + // Icone this._nextButtonInstance.icon_mc.beginFill(this._buttonColor); this._nextButtonInstance.icon_mc.lineTo(0, 8); @@ -851,14 +855,14 @@ class TemplateMulti extends ATemplate if (this._showVolume) { this._volumeButtonInstance = this._target.createEmptyMovieClip("volume_btn", this._target.getNextHighestDepth()); this._initButton(this._volumeButtonInstance, this.volumeWidth); - + // Position this._volumeButtonInstance._x = (this._showInfo)?this.buttonWidth*5:this.buttonWidth*4; - + this._volumeButtonInstance.area_mc.onPress = this.delegate(this, this._volumePress); this._volumeButtonInstance.area_mc.onRelease = this.delegate(this, this._volumeRelease); this._volumeButtonInstance.area_mc.onReleaseOutside = this.delegate(this, this._volumeRelease); - + // icone fond var vIconBackground:MovieClip = this._volumeButtonInstance.icon_mc.createEmptyMovieClip("background_mc", 1); vIconBackground.beginFill(this._buttonColor, 25); @@ -868,7 +872,7 @@ class TemplateMulti extends ATemplate vIconBackground.endFill(); vIconBackground._y = this._playerHeight/2 - vIconBackground._height/2; vIconBackground._x = this.volumeWidth/2 - vIconBackground._width/2; - + // icone this._updateVolume(); } @@ -885,14 +889,14 @@ class TemplateMulti extends ATemplate vIcon = this._volumeButtonInstance.icon_mc.current_mc; } vIcon.clear(); - + if (this._volume > this._volumeMax) { this._volume = this._volumeMax; } - + var vWidth:Number = (this.volumeWidth - 8) * this._volume / this._volumeMax; var vRatio:Number = this._volume / this._volumeMax; - + vIcon.beginFill(this._buttonColor); vIcon.moveTo(0, this.volumeHeight); vIcon.lineTo(vWidth, this.volumeHeight); @@ -914,7 +918,7 @@ class TemplateMulti extends ATemplate if (xmouse > max) { xmouse = max; } - + var volume:Number = xmouse * this._volumeMax / max; this.setVolume(volume); } @@ -934,7 +938,7 @@ class TemplateMulti extends ATemplate } /** * Initialisation de la barre - * + * * @param pMargin La marge gauche de la barre */ private function _initSlider(pMargin:Number) @@ -942,17 +946,17 @@ class TemplateMulti extends ATemplate if (this._sliderInstance == undefined) { this._sliderInstance = this._target.createEmptyMovieClip("slider_mc", this._target.getNextHighestDepth()); } - + // calcul de la taille var vMargin:Number = pMargin; vMargin += 10; - + this._sliderInstance._x = vMargin; this._sliderInstance.width = this._width - vMargin - 10; - + // barre this._sliderInstance.barBg_mc.removeMovieClip(); - var vBarBg:MovieClip = this._sliderInstance.createEmptyMovieClip("barBg_mc", this._sliderInstance.getNextHighestDepth()); + var vBarBg:MovieClip = this._sliderInstance.createEmptyMovieClip("barBg_mc", this._sliderInstance.getNextHighestDepth()); vBarBg.beginFill(0xcccccc, 25); vBarBg.lineTo(this._sliderInstance.width, 0); vBarBg.lineTo(this._sliderInstance.width, 1); @@ -964,58 +968,58 @@ class TemplateMulti extends ATemplate vBarBg.lineTo(this._sliderInstance.width, -1); vBarBg.lineTo(this._sliderInstance.width, 0); vBarBg.endFill(); - vBarBg._y = this._playerHeight / 2; - - + vBarBg._y = this._playerHeight / 2; + + // barre de chargement this._loadingInstance = this._sliderInstance.createEmptyMovieClip("loading_mc", this._sliderInstance.getNextHighestDepth()); - this._loadingInstance.beginFill(this._loadingColor, 75); - this._loadingInstance.moveTo(0, -1) - this._loadingInstance.lineTo(this._sliderInstance.width, -1); - this._loadingInstance.lineTo(this._sliderInstance.width, 1); - this._loadingInstance.lineTo(0, 1); + this._loadingInstance.beginFill(this._loadingColor, 75); + this._loadingInstance.moveTo(0, -1) + this._loadingInstance.lineTo(this._sliderInstance.width, -1); + this._loadingInstance.lineTo(this._sliderInstance.width, 1); + this._loadingInstance.lineTo(0, 1); this._loadingInstance.endFill(); - this._loadingInstance._y = this._playerHeight / 2; - this._loadingInstance._xscale = 0; - this._loadingInstance._visible = false; - - - // barre slider - var vSlider:MovieClip = this._sliderInstance.createEmptyMovieClip("bar_mc", this._sliderInstance.getNextHighestDepth()); + this._loadingInstance._y = this._playerHeight / 2; + this._loadingInstance._xscale = 0; + this._loadingInstance._visible = false; + + + // barre slider + var vSlider:MovieClip = this._sliderInstance.createEmptyMovieClip("bar_mc", this._sliderInstance.getNextHighestDepth()); vSlider.parent = this; vSlider.margin = vMargin; vSlider.width = this.sliderWidth; vSlider.barWidth = this._sliderInstance.width; vSlider.color = new Color(vSlider); vSlider.onRollOver = function() - { - this.color.setRGB(this.parent._sliderOverColor); - }; + { + this.color.setRGB(this.parent._sliderOverColor); + }; vSlider.onRollOut = function() - { - var transform:Object = {ra: 100, rb: 0, ga: 100, gb: 0, ba: 100, bb: 0, aa: 100, ab: 0}; - this.color.setTransform(transform); - }; + { + var transform:Object = {ra: 100, rb: 0, ga: 100, gb: 0, ba: 100, bb: 0, aa: 100, ab: 0}; + this.color.setTransform(transform); + }; vSlider.onPress = function() - { - this.startDrag(false, 0, this._y, this.barWidth - this.width, this._y); + { + this.startDrag(false, 0, this._y, this.barWidth - this.width, this._y); delete this.parent._sliderInstance.onEnterFrame; - }; + }; vSlider.onRelease = vSlider.onReleaseOutside = function() - { - this.stopDrag(); - var position:Number = this._x / (this.barWidth - this.width) * this.parent.player.getDuration(); + { + this.stopDrag(); + var position:Number = this._x / (this.barWidth - this.width) * this.parent.player.getDuration(); this.parent.player.setPosition(position); if (this.parent.player.isPlaying) { this.parent.playRelease(); } - }; - - vSlider.beginGradientFill("linear", - [this._sliderColor1, this._sliderColor2], - [100,100], - [50,150], - {matrixType:"box", x:0, y:0, w:this.sliderWidth, h:this.sliderHeight, r:Math.PI/2}); + }; + + vSlider.beginGradientFill("linear", + [this._sliderColor1, this._sliderColor2], + [100,100], + [50,150], + {matrixType:"box", x:0, y:0, w:this.sliderWidth, h:this.sliderHeight, r:Math.PI/2}); vSlider.moveTo(0, 4); vSlider.lineTo(0, this.sliderHeight - 4); vSlider.curveTo(0, this.sliderHeight, 4, this.sliderHeight); @@ -1034,23 +1038,23 @@ class TemplateMulti extends ATemplate private function _loading() { var objLoading:Object = this.player.getLoading(); - this._loadingInstance._xscale = (objLoading.percent >= 1)?objLoading.percent:0; + this._loadingInstance._xscale = (objLoading.percent >= 1)?objLoading.percent:0; if (objLoading.percent == 100) { if (this._showLoading != "always") { this._loadingInstance._visible = false; } - delete this._loadingInstance.onEnterFrame; + delete this._loadingInstance.onEnterFrame; } } - /** - * Le enterFrame du slider - */ + /** + * Le enterFrame du slider + */ private function _sliderEnterFrame() { var total:Number = (this._sliderInstance.loading_mc._visible)?this._sliderInstance.loading_mc._width:this._sliderInstance.width - this.sliderWidth; - var position:Number = Math.round(this.player.getPosition()/this.player.getDuration() * total); + var position:Number = Math.round(this.player.getPosition()/this.player.getDuration() * total); this._sliderInstance.bar_mc._x = position; - + if (!this.player.isPlaying && position == total) { this.stopRelease(); } @@ -1061,7 +1065,8 @@ class TemplateMulti extends ATemplate } /** * Initialisation de la playlist - * @return true */ + * @return true + */ private function _initPlaylist():Boolean { var totalMp3:Number = _root.mp3.split("|").length; @@ -1069,18 +1074,18 @@ class TemplateMulti extends ATemplate if (version.indexOf("MAC") != -1) { totalMp3++; } - + // On vérifie si on affiche la playlist ou pas if (!this._showList) { return true; } - + // Création this._playlistInstance = this._target.createEmptyMovieClip("playlist_mc", this._target.getNextHighestDepth()); - + // Position this._playlistInstance._y = this._playerHeight; - + // Fond if (this._backgroundSkin == undefined) { this._playlistInstance.moveTo(5, 0); @@ -1090,21 +1095,21 @@ class TemplateMulti extends ATemplate this._playlistInstance.lineTo(5, this._height - this._playerHeight - 5); this._playlistInstance.endFill(); } - + // Champ de texte this._playlistInstance.createTextField("list_txt", 1, 5, 0, this._width - 20, this._height - this._playerHeight); //this._playlistInstance.list_txt.selectable = false; this._playlistInstance.list_txt.html = true; - + // Remplissage du champ pour vérifier si ca scroll this._playlistInstance.list_txt.text = ""; for (var i:Number=0; i 1) { this._scrollbarInstance = this._playlistInstance.createEmptyMovieClip("scrollbar_mc", 2); @@ -1128,14 +1133,14 @@ class TemplateMulti extends ATemplate this._scrollbarInstance.color = new Color(this._scrollbarInstance); this._scrollbarInstance.colorOver = this._scrollbarOverColor; this._scrollbarInstance.onRollOver = function() - { - this.color.setRGB(this.colorOver); - }; + { + this.color.setRGB(this.colorOver); + }; this._scrollbarInstance.onRollOut = function() - { - var transform:Object = {ra: 100, rb: 0, ga: 100, gb: 0, ba: 100, bb: 0, aa: 100, ab: 0}; - this.color.setTransform(transform); - }; + { + var transform:Object = {ra: 100, rb: 0, ga: 100, gb: 0, ba: 100, bb: 0, aa: 100, ab: 0}; + this.color.setTransform(transform); + }; this._scrollbarInstance.onPress = function() { this.onEnterFrameAuto = this.onEnterFrame; @@ -1159,36 +1164,37 @@ class TemplateMulti extends ATemplate } } } - + // Mise à jour de la playlist en permanence this._playlistInstance.waitScroll = 0; this._playlistInstance.intervalScroll = 0; this._playlistInstance.scrollMemo = 0; this._playlistInstance.onEnterFrame = this.delegate(this, this.updatePlaylist); - + return true; } /*===================== FIN = METHODES PRIVEES = FIN =====================*/ /*========================================================================*/ - + /*========================== METHODES PUBLIQUES ==========================*/ /*========================================================================*/ /** * Mise à jour de la playlist - * - * @param pAutoScroll Indique qu'il faut scroller au bon endroit de la liste */ + * + * @param pAutoScroll Indique qu'il faut scroller au bon endroit de la liste + */ public function updatePlaylist(pAutoScroll:Boolean) { var text:String = "" var title_tmp:String; var color:String = this._textColor.toString(16); - + if (this.player.playlist.length > 0) { text = ""; } else { text = "Liste vide"; } - + // Génération des pistes for (var i:Number=0; i 0) { // On peut scroller title_tmp += " - "; var textLength:Number = title_tmp.length; - + if (++this._playlistInstance.waitScroll < 40) { this._playlistInstance.intervalScroll = 0; } - + title_tmp = title_tmp.substring(this._playlistInstance.scrollMemo, textLength) + title_tmp.substring(0, this._playlistInstance.scrollMemo - 1); if (++this._playlistInstance.intervalScroll > 5) { this._playlistInstance.scrollMemo += 1; @@ -1229,36 +1235,38 @@ class TemplateMulti extends ATemplate this._playlistInstance.scrollMemo = this._playlistInstance.scrollMemo % (textLength); } this._playlistInstance.textfield_tmp.text = ""; - + // La fin text += title_tmp; text += "\n"; text += ""; text += ""; } - + this._playlistInstance.list_txt.htmlText = text; - + // Scroll automatique sur l'élément if (pAutoScroll && this._playlistInstance.list_txt.maxscroll > 1) { this._playlistInstance.list_txt.scroll = this._playlistInstance.list_txt.maxscroll - (this.player.playlist.length - 1 - this.player.index); } - + // Boutons Previous et Next this._enableButton(this._nextButtonInstance, this.player.hasNext); this._enableButton(this._previousButtonInstance, this.player.hasPrevious); } /** - * Action sur le bouton Previous */ + * Action sur le bouton Previous + */ public function previousRelease() { this.player.previous(); - + this._currentIndex = this.player.index; this.updatePlaylist(true); } /** - * Action sur le bouton Play */ + * Action sur le bouton Play + */ public function playRelease() { super.playRelease(); @@ -1266,26 +1274,28 @@ class TemplateMulti extends ATemplate this._enableButton(this._pauseButtonInstance, true); this._enableButton(this._stopButtonInstance, true); this._sliderInstance.onEnterFrame = this.delegate(this, this._sliderEnterFrame); - + this._currentIndex = this.player.index; - + this._playlistInstance.waitScroll = 0; this._playlistInstance.intervalScroll = 0; this._playlistInstance.scrollMemo = 0; this.updatePlaylist(true); } - /** * Action sur le bouton Pause + /** + * Action sur le bouton Pause */ public function pauseRelease() { super.pauseRelease(); this._enableButton(this._pauseButtonInstance, false, true); this._enableButton(this._playButtonInstance, true); - + this.updatePlaylist(); } /** - * Action sur le bouton Stop */ + * Action sur le bouton Stop + */ public function stopRelease() { super.stopRelease(); @@ -1294,7 +1304,7 @@ class TemplateMulti extends ATemplate this._enableButton(this._playButtonInstance, true); delete this._sliderInstance.onEnterFrame; this._sliderInstance.bar_mc._x = 0; - + this.updatePlaylist(); } /** @@ -1314,13 +1324,13 @@ class TemplateMulti extends ATemplate public function nextRelease() { this.player.next(); - + this._currentIndex = this.player.index; this.updatePlaylist(true); } /** * Modifie le volume - * + * * Le maximum est de 200 * @param pVolume Le nouveau volume */ @@ -1343,4 +1353,4 @@ class TemplateMulti extends ATemplate } /*==================== FIN = METHODES PUBLIQUES = FIN ====================*/ /*========================================================================*/ -} \ No newline at end of file +} diff --git a/template_multi/player_mp3_multi.swf b/template_multi/player_mp3_multi.swf index 846c7b80894b53178fa1f729f174afb8b98dc78b..b63f136d364d8a85a953e689d73c7f6c032caa09 100644 GIT binary patch literal 9329 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 M0RR630HaA3BVVOA>i_@% From 82e15714e64053ec3ca0320ef770a921a3626c6b Mon Sep 17 00:00:00 2001 From: Neimheadh Date: Sun, 7 Aug 2016 21:32:43 +0200 Subject: [PATCH 2/2] Reuse mtasc.dir --- build.xml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/build.xml b/build.xml index 216b6ed..fcd5001 100644 --- a/build.xml +++ b/build.xml @@ -5,7 +5,7 @@ - + - + - + - + - +