- Home
- Categorie
- Digital Marketing
- Grafica, Visual Design & UX
- Elenco dinamico in Flash+XML
-
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
-
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.
-
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'
-
Ok, fatto.. Non va
Non compare nulla, è come se non l'avessi nemmeno aggiunto.
Ed ora??? Non riesco proprio ad uscirne..
-
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;
-
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?
-
Controlla l'identificatore perchè la variabile va benissimo
-
Niente, l'identificatore è ok..
Se ti va posto un link con tutto zippato, io non capisco cosa può essere sbagliato.Ciao
-
cosa c'è scritto nell'identificatore ?
-
Quello che mi hai suggerito tu.. mc_circle
-
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
-
@Flep said:
ps: vedi questa riga:
clip_mc.attachMovie('circle_mc', 'circle'+i+'_mc', _root.getNextHighestDepth());
il primo parametro è il nome dell'identificatoreL'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.
-
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.
-
Yeeeeeeeeeeeees!!!!!! Grazie mille
Cecco