• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

magal

mp3 player

3 mensagens neste tópico

// Olá pessoal! Estou aqui com uma pequena dificuldade em conseguir usar o "get" e o "set" na parte final da minha aplicação  :thumbdown: SE ALGUÉM SOUBER QUAL O PROBLEMA AVISEM SFF  :P

       

 import flash.filters.GlowFilter;

Mp3Player = Mp3Player("song01.mp3", this, 10, 10);

var parent_mc:MovieClip;
var interface_mc:MovieClip;

var start_mc:MovieClip;
var stop_mc:MovieClip;
var pause_mc:MovieClip;
var volume_mc:MovieClip;
var progress_mc:MovieClip;

var _sound:Sound = null;

var pausedLocation:Number = 0;
var playingInterval:Number;
var loadingInterval:Number;

function Mp3Player(soundURL:String, parent:MovieClip, x:Number, y:Number){
	this.parent_mc = parent;
	interface_mc=parent_mc.createEmptyMovieClip("interface_mc", parent_mc.getNextHighestDepth());
	interface_mc._x=x;
	interface_mc._y=y;
	initComponents();
	buildInterface();
	loadSound(soundURL);
}

function initComponents(){
	var parent:Object = this;
	progress_mc = createBar(interface_mc, 245, 5);
	start_mc = createButton(interface_mc, "Play");
	stop_mc = createButton(interface_mc, "Stop");
	pause_mc = createButton(interface_mc, "Pause");
	volume_mc = createVolume(interface_mc);

	start_mc.onRelease = function(){
		parent.sound.setVolume(parent.volume_mc.volume);
		parent.sound.start(parent.pausedLocation);
		this._visible = false;
		parent.stop_mc._visible = true;
		parent.pause_mc._visible = true;
		parent.playingInterval = setInterval(parent.checkPlayingProgress, 100, parent.sound, parent.progress_mc);
	}

	stop_mc.onRelease = function(){
		parent.sound.stop();
		parent.pausedLocation = 0;
		this._visible = false;
		parent.pause_mc._visible = false;
		parent.start_mc._visible = true;
		clearInterval(parent.playingInterval);
		parent.progress_mc._xscale=100;
	}

	pause_mc.onRelease = function(){
		parent.sound.stop();
		parent.pausedLocation = Math.round(parent.sound.getPosition()/1000);	
		parent.stop_mc._visible = false;
		parent.start_mc._visible = true;
		clearInterval(parent.playingInterval);
	}
}

function buildInterface(){
	progress_mc._x = 10;
	progress_mc._y = 1;
	progress_mc._xscale = 0;

	start_mc._x = 10;
	start_mc._y = 10;
	stop_mc._x = 10;
	stop_mc._y = 10;
	pause_mc._x = 80;
	pause_mc._y = 10;

	volume_mc._x = 150;
	volume_mc._y = 10;

	start_mc._visible = true;
}

function createVolume(parent:MovieClip):MovieClip{
	var top:Object = this;
	var mc:MovieClip = parent.createEmptyMovieClip("mc", parent.getNextHighestDepth());
	mc.volume = 50;
	var fillType:String = "linear";
	var colors:Array = [0xFAD4DB, 0xEC748B, 0xC13A59, 0xA81230]; 
	var alphas:Array = [100, 100, 100, 100]; 
	var ratios:Array = [0, 126, 127, 255]; 
	var matrix:Object = {matrixType:"box", x:0, y:0, w:60, h:30, r:90/180*Math.PI};
	mc.createEmptyMovieClip("volumeBkg", mc.getNextHighestDepth());
	mc.volumeBkg.lineStyle(1, 0x820F26, 60, true, "none", "square", "round");
	mc.volumeBkg.beginGradientFill(fillType, colors, alphas, ratios, matrix);
	mc.volumeBkg.moveTo(0,30)
	mc.volumeBkg.lineTo(105, 0);
	mc.volumeBkg.lineTo(105, 30);
	mc.volumeBkg.lineTo(0, 30);
	mc.volumeBkg.endFill();
	var volumeBar:MovieClip = createBar(mc, 5, -30);
	volumeBar.onPress = function(){
		this.startDrag(true, 0, 30, 100, 30);	
	}
	volumeBar.onRelease = function(){
		this.stopDrag();
		top.sound.setVolume(this._x);	
	}
	volumeBar.onMouseMove = function(){
		this._yscale = this._x;
		this.updateAfterRefresh();
	}
	volumeBar.onReleaseOutside = volumeBar.onRelease;
	volumeBar._x = mc.volume;
	volumeBar._yscale = volumeBar._x;
	volumeBar._y = 30;
	mc._visible = true;
	mc.volumeBkg.onPress = function(){
		volumeBar._x = this._xmouse;
		volumeBar._yscale = volumeBar._x;
		top.sound.setVolume(volumeBar._x);	
		volumeBar.updateAfterEvent();
	}
	return mc;
}

function createBar(parent:MovieClip, w:Number, h:Number):MovieClip{
	var mc:MovieClip = parent.createEmptyMovieClip("mc", parent.getNextHighestDepth());
	mc.lineStyle(1, 0x820F26, 100, true, "none", "square", "round");
	mc.beginFill(0xFAD4DB, 60);
	mc.lineTo(w, 0);
	mc.lineTo(w, h);
	mc.lineTo(0, h);
	mc.lineTo(0, 0);
	mc.endFill();
	return mc;
}

function createButton(parent:MovieClip, text:String):MovieClip{
	//  GlowFilter(Cor ,alpha [0-1],Hblur[0,255], Vblur[0-255], força[0-255], qualidade[1-3 até 15], Inner, Knockout)
	var labelGlow:GlowFilter = new GlowFilter(0xFFFFFF, .9, 4, 4, 3, 3, false, true);
	var labelFilters:Array = [labelGlow];
	var mc:MovieClip = parent.createEmptyMovieClip("mc", parent.getNextHighestDepth());
	//Criar um gradiente linear de 4 cores
	var fillType:String = "linear"; //Opções: linear, radial
	var colors:Array = [0xFAD4DB, 0xEC748B, 0xC13A59, 0xA81230]; //As cores do gradiente
	var alphas:Array = [100, 100, 100, 100]; // A opacidade das cores do gradiente
	var ratios:Array = [0, 126, 127, 255]; // indica o racio de cada cor.
	// A matrix define o gradiente como uma caixa, valores de x, y, altura, largura e rotação,
	// sobre a forma de um objecto com as variáveis 'matrixType', 'x', 'y', 'w', 'h' e 'r'
	// o valor de 'r' é expresso em radianos logo temos que converter o angulo em graus.
	// radianos = graus de rotação / 180 * PI
	var matrix:Object = {matrixType:"box", x:0, y:0, w:60, h:30, r:90/180*Math.PI};
	mc.createEmptyMovieClip("buttonBkg", mc.getNextHighestDepth());
	mc.buttonBkg.lineStyle(1, 0x820F26, 60, true, "none", "square", "round");
	mc.buttonBkg.beginGradientFill(fillType, colors, alphas, ratios, matrix);
	mc.buttonBkg.lineTo(60, 0);
	mc.buttonBkg.lineTo(60, 30);
	mc.buttonBkg.lineTo(0, 30);
	mc.buttonBkg.lineTo(0, 0);
	mc.buttonBkg.endFill();
	//Definir a formatação do texto
	var myFormat:TextFormat = new TextFormat();
	myFormat.align = "center";
	//myFormat.font = "Tahoma"; //optei por não definir a fonte.
	myFormat.size = 13;
	myFormat.color = 0xFFFFFF;
	//                  Nome       ,  profundidade          , x, y, width    , height
	mc.createTextField("labelText", mc.getNextHighestDepth(), 0, 5, mc._width, 24);
	mc.labelText.text = text;
	mc.labelText.selectable = false;
	mc.labelText.antiAliasType = "advanced";
	mc.labelText.setTextFormat(myFormat);
	mc.labelText.filters = labelFilters;
	mc._visible = false;
	return mc;
}

function loadSound(url:String){
	var parent:Object = this;
	_sound = new Sound();
	_sound.onLoad = function(success:Boolean){
		if (success){
			clearInterval(parent.loadingInterval);	
			parent.progress_mc._xscale = 100;
		}
	}
	_sound.loadSound(url,false);
	loadingInterval = setInterval(checkLoadingProgress, 100, _sound, progress_mc);

}

function checkLoadingProgress(the_sound:Sound, _progress:MovieClip):Void {
    	var loaded:Number = Math.round(the_sound.getBytesLoaded()/(the_sound.getBytesTotal()*100));
    	_progress._xscale = loaded;
}

function checkPlayingProgress(_sound:Sound, _progress:MovieClip):Void {
    	var _play:Number = Math.round(_sound.getPosition()/_sound.getDuration()*100);
    	_progress._xscale = _play;
}

// ATENÇÃO VER ERRO AQUI !!!!  :eek: 

function [b]get sound():Sound{
	return _sound;
}

function [b]set soundURL(soundURL:String):Void{
	loadSound(soundURL);
}
}

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Não sei se "postaste" tudo misturado, ou se estás mesmo a utilizar assim o código.

get/set são para utilizar dentro de uma classe, de maneira a acederes a propriedades sem as tornar publicas. Ou seja, sem expor directamente ao exterior.

Modo de utilização:

var meuMp3Player = new Mp3Player("song01.mp3", this, 10, 10);

Mp3Player.as

import flash.filters.GlowFilter;

class Mp3Player{
   var parent_mc:MovieClip;
   var interface_mc:MovieClip;
   
   var start_mc:MovieClip;
   var stop_mc:MovieClip;
   var pause_mc:MovieClip;
   var volume_mc:MovieClip;
   var progress_mc:MovieClip;
   
   var _sound:Sound = null;
   
   var pausedLocation:Number = 0;
   var playingInterval:Number;
   var loadingInterval:Number;
   
   function Mp3Player(soundURL:String, parent:MovieClip, x:Number, y:Number){
      this.parent_mc = parent;
      interface_mc=parent_mc.createEmptyMovieClip("interface_mc", parent_mc.getNextHighestDepth());
      interface_mc._x=x;
      interface_mc._y=y;
      initComponents();
      buildInterface();
      loadSound(soundURL);
   }

   function initComponents(){
      var parent:Object = this;
      progress_mc = createBar(interface_mc, 245, 5);
      start_mc = createButton(interface_mc, "Play");
      stop_mc = createButton(interface_mc, "Stop");
      pause_mc = createButton(interface_mc, "Pause");
      volume_mc = createVolume(interface_mc);
      
      start_mc.onRelease = function(){
         parent.sound.setVolume(parent.volume_mc.volume);
         parent.sound.start(parent.pausedLocation);
         this._visible = false;
         parent.stop_mc._visible = true;
         parent.pause_mc._visible = true;
         parent.playingInterval = setInterval(parent.checkPlayingProgress, 100, parent.sound, parent.progress_mc);
      }
      
      stop_mc.onRelease = function(){
         parent.sound.stop();
         parent.pausedLocation = 0;
         this._visible = false;
         parent.pause_mc._visible = false;
         parent.start_mc._visible = true;
         clearInterval(parent.playingInterval);
         parent.progress_mc._xscale=100;
      }
      
      pause_mc.onRelease = function(){
         parent.sound.stop();
         parent.pausedLocation = Math.round(parent.sound.getPosition()/1000);   
         parent.stop_mc._visible = false;
         parent.start_mc._visible = true;
         clearInterval(parent.playingInterval);
      }
   }
   
   function buildInterface(){
      progress_mc._x = 10;
      progress_mc._y = 1;
      progress_mc._xscale = 0;
      
      start_mc._x = 10;
      start_mc._y = 10;
      stop_mc._x = 10;
      stop_mc._y = 10;
      pause_mc._x = 80;
      pause_mc._y = 10;
      
      volume_mc._x = 150;
      volume_mc._y = 10;
      
      start_mc._visible = true;
   }
   
   function createVolume(parent:MovieClip):MovieClip{
      var top:Object = this;
      var mc:MovieClip = parent.createEmptyMovieClip("mc", parent.getNextHighestDepth());
      mc.volume = 50;
      var fillType:String = "linear";
      var colors:Array = [0xFAD4DB, 0xEC748B, 0xC13A59, 0xA81230];
      var alphas:Array = [100, 100, 100, 100];
      var ratios:Array = [0, 126, 127, 255];
      var matrix:Object = {matrixType:"box", x:0, y:0, w:60, h:30, r:90/180*Math.PI};
      mc.createEmptyMovieClip("volumeBkg", mc.getNextHighestDepth());
      mc.volumeBkg.lineStyle(1, 0x820F26, 60, true, "none", "square", "round");
      mc.volumeBkg.beginGradientFill(fillType, colors, alphas, ratios, matrix);
      mc.volumeBkg.moveTo(0,30)
      mc.volumeBkg.lineTo(105, 0);
      mc.volumeBkg.lineTo(105, 30);
      mc.volumeBkg.lineTo(0, 30);
      mc.volumeBkg.endFill();
      var volumeBar:MovieClip = createBar(mc, 5, -30);
      volumeBar.onPress = function(){
         this.startDrag(true, 0, 30, 100, 30);   
      }
      volumeBar.onRelease = function(){
         this.stopDrag();
         top.sound.setVolume(this._x);   
      }
      volumeBar.onMouseMove = function(){
         this._yscale = this._x;
         this.updateAfterRefresh();
      }
      volumeBar.onReleaseOutside = volumeBar.onRelease;
      volumeBar._x = mc.volume;
      volumeBar._yscale = volumeBar._x;
      volumeBar._y = 30;
      mc._visible = true;
      mc.volumeBkg.onPress = function(){
         volumeBar._x = this._xmouse;
         volumeBar._yscale = volumeBar._x;
         top.sound.setVolume(volumeBar._x);   
         volumeBar.updateAfterEvent();
      }
      return mc;
   }
   
   function createBar(parent:MovieClip, w:Number, h:Number):MovieClip{
      var mc:MovieClip = parent.createEmptyMovieClip("mc", parent.getNextHighestDepth());
      mc.lineStyle(1, 0x820F26, 100, true, "none", "square", "round");
      mc.beginFill(0xFAD4DB, 60);
      mc.lineTo(w, 0);
      mc.lineTo(w, h);
      mc.lineTo(0, h);
      mc.lineTo(0, 0);
      mc.endFill();
      return mc;
   }
   
   function createButton(parent:MovieClip, text:String):MovieClip{
      //  GlowFilter(Cor ,alpha [0-1],Hblur[0,255], Vblur[0-255], força[0-255], qualidade[1-3 até 15], Inner, Knockout)
      var labelGlow:GlowFilter = new GlowFilter(0xFFFFFF, .9, 4, 4, 3, 3, false, true);
      var labelFilters:Array = [labelGlow];
      var mc:MovieClip = parent.createEmptyMovieClip("mc", parent.getNextHighestDepth());
      //Criar um gradiente linear de 4 cores
      var fillType:String = "linear"; //Opções: linear, radial
      var colors:Array = [0xFAD4DB, 0xEC748B, 0xC13A59, 0xA81230]; //As cores do gradiente
      var alphas:Array = [100, 100, 100, 100]; // A opacidade das cores do gradiente
      var ratios:Array = [0, 126, 127, 255]; // indica o racio de cada cor.
      // A matrix define o gradiente como uma caixa, valores de x, y, altura, largura e rotação,
      // sobre a forma de um objecto com as variáveis 'matrixType', 'x', 'y', 'w', 'h' e 'r'
      // o valor de 'r' é expresso em radianos logo temos que converter o angulo em graus.
      // radianos = graus de rotação / 180 * PI
      var matrix:Object = {matrixType:"box", x:0, y:0, w:60, h:30, r:90/180*Math.PI};
      mc.createEmptyMovieClip("buttonBkg", mc.getNextHighestDepth());
      mc.buttonBkg.lineStyle(1, 0x820F26, 60, true, "none", "square", "round");
      mc.buttonBkg.beginGradientFill(fillType, colors, alphas, ratios, matrix);
      mc.buttonBkg.lineTo(60, 0);
      mc.buttonBkg.lineTo(60, 30);
      mc.buttonBkg.lineTo(0, 30);
      mc.buttonBkg.lineTo(0, 0);
      mc.buttonBkg.endFill();
      //Definir a formatação do texto
      var myFormat:TextFormat = new TextFormat();
      myFormat.align = "center";
      //myFormat.font = "Tahoma"; //optei por não definir a fonte.
      myFormat.size = 13;
      myFormat.color = 0xFFFFFF;
      //                  Nome       ,  profundidade          , x, y, width    , height
      mc.createTextField("labelText", mc.getNextHighestDepth(), 0, 5, mc._width, 24);
      mc.labelText.text = text;
      mc.labelText.selectable = false;
      mc.labelText.antiAliasType = "advanced";
      mc.labelText.setTextFormat(myFormat);
      mc.labelText.filters = labelFilters;
      mc._visible = false;
      return mc;
   }
   
   function loadSound(url:String){
      var parent:Object = this;
      _sound = new Sound();
      _sound.onLoad = function(success:Boolean){
         if (success){
            clearInterval(parent.loadingInterval);   
            parent.progress_mc._xscale = 100;
         }
      }
      _sound.loadSound(url,false);
      loadingInterval = setInterval(checkLoadingProgress, 100, _sound, progress_mc);
      
   }
   
   function checkLoadingProgress(the_sound:Sound, _progress:MovieClip):Void {
       var loaded:Number = Math.round(the_sound.getBytesLoaded()/(the_sound.getBytesTotal()*100));
       _progress._xscale = loaded;
   }
   
   function checkPlayingProgress(_sound:Sound, _progress:MovieClip):Void {
       var _play:Number = Math.round(_sound.getPosition()/_sound.getDuration()*100);
       _progress._xscale = _play;
   }
   
   function get sound():Sound{
      return _sound;
   }
   
   function set soundURL(soundURL:String):Void{
      loadSound(soundURL);
   }
}

Nota: Convém definir as variáveis/funções se são publicas ou privadas.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Obrigado! Acabei por criar uma classe, com variaveis pulbicas e privadas e já não houve qualquer erro. Abraço

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora