• 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