• User Attivo

    @Flep said:

    Bè se cerchi qualcuno che te la faccia a pagamento, io sono disponibile. 🙂

    Be', ti chiedo scusa se non l'avevo specificato... sono in contatto con un altro utente ma vista la tua esperienza potrei affidare a te la cosa!
    Ci sentiamo in privato, OK? Ti mando subito un PM! 😉


  • User Attivo

    Hey Flep, sono tornato!!! 🙂 Sei contento?
    Vorrei fare un'implementazione allo script, solo che come al solito non sono capace di ottenere quello che voglio, oppure ottengo cose diverse..

    La domanda è: sarebbe possibile fare in modo che cliccando su un brano compaia qualcosa, un pallino, un'altoparlante, una qualsiasi cosa per far capire che quella traccia sta andando? L'ideale sarebbe un movieclip, io ho provato con attachMovie ma non ne sono uscito.. Soprattutto perchè quando l'utente clicca su un brano dopo averne già ascoltato uno il movieclip dovrebbe sparire. L'idea è una cosa simile..

    http://www.djjosephb.com/esempio.html

    Grazie tante.
    Ciao ciao
    Cecco


  • Super User

    Ciao,
    metti all'inizio dello script:
    var clip_mc:MovieClip;

    Poi nell'azione on Press scrivi:

    
    clip_mc.removeMovieClip();
    clip_mc.attachMovie('nome_clip','nuovo_nome_clip',_root.getNextHighestDepth());
    clip_mc._x=m._x;
    clip_mc._y=m._y;
    
    

    Sistema la _x e la _y a tuo piacere


  • User Attivo

    Non so se sbaglio qualcosa, ma non va.. 😞
    Io ho fatto un movieclip e gli ho dato l'identificatore circle_mc
    Poi ho fatto le modifiche che mi hai detto e il codice è diventato questo:

    var clips_array:Array = new Array();
    var posizioni_array:Array = new Array();
    var artisti_array:Array = new Array();
    var titoli_array:Array = new Array();
    var url_array:Array = new Array();
    var container:MovieClip = this.createEmptyMovieClip('container_mc', this.getNextHighestDepth());
    var clip_mc:MovieClip;
    var ln:Number = 18;
    var spacer:Number = 10;
    var s:Sound;
    var xml:XML = new XML();
    for (var i:Number = 0; i<ln; i++) {
    	var newY:Number = i*(container._height+spacer);
    	var duplicate:MovieClip = container.createEmptyMovieClip('clip_'+i+'_mc', container.getNextHighestDepth());
    	setUpContainer(duplicate);
    	duplicate._y = duplicate._height*i+10*i;
    	duplicate.id = i;
    	setEvent(duplicate);
    	clips_array.push(duplicate);
    	var field_0:TextField = duplicate.createTextField('positione_txt', duplicate.getNextHighestDepth(), 5, 2, 0, 0);
    	var field_1:TextField = duplicate.createTextField('artista_txt', duplicate.getNextHighestDepth(), 5, 2, 0, 0);
    	var field_2:TextField = duplicate.createTextField('titolo_txt', duplicate.getNextHighestDepth(), 5, 2, 0, 0);
    	setText(field_0);
    	setText(field_1);
    	setText(field_2);
    	field_1._x = field_0._x+field_0._width+40;
    	field_2._x = 230;
    }
    xml.ignoreWhite = true;
    xml.onLoad = function(ok:Boolean) {
    	if (ok) {
    		var node:XMLNode = this.firstChild;
    		var n:Number = node.childNodes.length;
    		for (var i:Number = 0; i<n; i++) {
    			posizioni_array.push(node.childNodes*.attributes['posizione']);
    			artisti_array.push(node.childNodes*.attributes['artista']);
    			titoli_array.push(node.childNodes*.attributes['titolo']);
    			url_array.push(node.childNodes*.attributes['url']);
    		}
    		initText();
    	} else {
    		trace('XML error!');
    	}
    };
    xml.load('produzioni/dance/dance.xml');
    function initText() {
    	for (var i:Number = 0; i<clips_array.length; i++) {
    		clips_array*.positione_txt.text = posizioni_array*;
    		clips_array*.artista_txt.text = artisti_array*;
    		clips_array*.titolo_txt.text = titoli_array*;
    	}
    }
    function setUpContainer(mc:MovieClip):Void {
    	mc.beginFill(0x99943E, 80);
    	mc.lineTo(440, 0);
    	mc.lineTo(440, 20);
    	mc.lineTo(0, 20);
    	mc.lineTo(0, 0);
    	mc.endFill();
    }
    function setText(t:TextField):Void {
    	t.setNewTextFormat(getFormat());
    	t.multiline = false;
    	t.selectable = false;
    	t.autoSize = true;
    	t.embedFonts = true;
    }
    function getFormat():TextFormat {
    	var format:TextFormat = new TextFormat();
    	format.font = "myfont";
    	format.color = 0xFFFFFF;
    	format.size = 8;
    	return (format);
    }
    function setEvent(m:MovieClip):Void {
    	m.onPress = function():Void  {
    		s.stop();
    		s = new Sound();
    		s.loadSound(url_array[this.id], true);
    		s.start();
    		clip_mc.removeMovieClip();
    		clip_mc.attachMovie('circle_mc', 'circle'+i+'_mc', _root.getNextHighestDepth());
    		clip_mc._x = m._x+32;
    		clip_mc._y = m._y+3;
    	};
    }
    
    

    Ma niente.. Cosa posso fare?
    Grazie, ciao.


  • Super User

    Questo non va bene:
    'circle'+i+'_mc'

    la i è undefined, non sei dentro un ciclo.

    Fai così:
    dai nome identificatore 'mc_circle' e nuovo nome 'circle_mc'


  • User Attivo

    Ok, fatto.. Non va 😞 😞 😞
    Non compare nulla, è come se non l'avessi nemmeno aggiunto.
    Ed ora??? Non riesco proprio ad uscirne..


  • Super User

    Fai dei trace.
    Cerca di capire dove è il problema.

    Scrivi
    s.stop();
    s = new Sound();
    s.loadSound(url_array[this.id], true);
    s.start();
    clip_mc.removeMovieClip();
    clip_mc.attachMovie('circle_mc', 'circle'+i+'_mc', _root.getNextHighestDepth());
    trace(clip_mc);
    clip_mc._x = m._x+32;
    clip_mc._y = m._y+3;


  • User Attivo

    Già fatto... Mi restituisce undefined.

    Ma sei sicuro che questo

    var clip_mc:MovieClip;
    

    vada bene così? Io e le variabili non siamo proprio amici amici, ma a me sembra che manchi qualcosa.. Altrimenti cosa può essere?


  • Super User

    Controlla l'identificatore perchè la variabile va benissimo


  • User Attivo

    Niente, l'identificatore è ok..
    Se ti va posto un link con tutto zippato, io non capisco cosa può essere sbagliato.

    Ciao


  • Super User

    cosa c'è scritto nell'identificatore ?


  • User Attivo

    Quello che mi hai suggerito tu.. mc_circle


  • Super User

    no, chiamalo circle_mc e funzionerà 😉

    ps: vedi questa riga:
    clip_mc.attachMovie('circle_mc', 'circle'+i+'_mc', _root.getNextHighestDepth());
    il primo parametro è il nome dell'identificatore 🙂


  • User Attivo

    @Flep said:

    ps: vedi questa riga:
    clip_mc.attachMovie('circle_mc', 'circle'+i+'_mc', _root.getNextHighestDepth());
    il primo parametro è il nome dell'identificatore 🙂

    L'avevo capito questo, ma visto che tu hai detto anche questo..

    Questo non va bene:
    'circle'+i+'_mc'

    la i è undefined, non sei dentro un ciclo.

    Fai così:
    dai nome identificatore 'mc_circle' e nuovo nome 'circle_mc'

    ..Io l'avevo modificata così. E comunque anche se la rimetto come nel caso 1 non va un tubo.


  • Super User

    Così funziona:

    
    function setEvent(m:MovieClip):Void {
     m.onPress = function():Void  {
      s.stop();
      s = new Sound();
      s.loadSound(url_array[this.id], true);
      s.start();
      clip_mc.removeMovieClip();
      clip_mc=_root.createEmptyMovieClip('mc_circleContainer',_root.getNextHighestDepth());
      clip_mc.attachMovie('mc_circle', 'circle'+clip_mc.getNextHighestDepth()+'_mc', clip_mc.getNextHighestDepth());
      clip_mc._x = m._x+32;
      clip_mc._y = m._y+3;
     };
    }
    
    

    Tieni l'identificatore mc_circle.


  • User Attivo

    Yeeeeeeeeeeeees!!!!!! Grazie mille 🙂

    Cecco