Gå til innhold

problemer med xml og flash


Anbefalte innlegg

Jeg har da laget en "news-viewer" i flash, hvor da jeg bruker xml(skal senere gjøres om til cms, men skulle først fikse til alt design messig og slikt før heavy-programmereren i firmaet skulle gjøre resten), problemet mitt er at det som står i xmlen ikke vises, det skal visstnok være noe problem med linkingen, men etter en god del googling så har jeg kommet fram til at jeg ikke helt forsto hva de helt mente...

 

Flashen jeg refererer til er denne siden

 

mappestrukturen er slik: swf og fla i root mappen(ligger i en mappe kalt flash) og så er xml i en egen mappe utenom det(kalte den for resources). Selve flashen fungerer greit, her er direkte linken til flashen

 

Hvis det er noe mer informasjon dere trenger for å måtte hjelpe så er det bare å si ifra.

Lenke til kommentar
Videoannonse
Annonse
			

var xmlFileName = "resources/news.xml";
var tweentoleration = .5;
var tweendecay = .3;


////////////// ///////
var mainXmlData = new XML();
mainXmlData.ignoreWhite = true;

tmp_txt._visible = false; 

var menuItems = new Array();

function collapseAll(citm) {
//trace("COlLAPSE ALL MENU ITEMS");
for (i=0; i<menuItems.length; i++) {
	if (menuItems[i] != citm) {
		//trace(menuItems[i]+"  "+menuItems[i].expanded);
		if (menuItems[i].expanded == true) {
			menuItems[i].expanded = false;
			collapse(menuItems[i]);
		}
	}
}
}


function expand(mitm) {
collapseAll(mitm);
yOffset = 0;
mitm.menuItems = new Array();
mitm.segments = new Array();
next_item = mitm.node2;
mitm.next_item = next_item;
//trace(mitm.xmlData.childNodes.length); 
for (i=0; i<mitm.xmlData.childNodes.length; i++) {
	dpth = this.getNextHighestDepth();
	attachMovie(mitm.xmlData.childNodes[i].attributes.template, "item"+dpth, dpth);
	this["item"+dpth].active = true;
	this["item"+dpth]._y = Math.round(mitm._y);
	//yOffset;
	this["item"+dpth]._x = 0;//mitm._x+5-10*Math.random();
	//5-10*Math.random();
	this["item"+dpth].xmlData = mitm.xmlData.childNodes[i];
	this["item"+dpth].txt = mitm.xmlData.childNodes[i].firstChild//attributes.label;
	mitm.menuItems.push(this["item"+dpth]);
	if (mitm.menuItems[mitm.menuItems.length-2] != undefined) {
		mitm.menuItems[mitm.menuItems.length-2].node2 = this["item"+dpth];
		mitm.menuItems[mitm.menuItems.length-1].node1 = mitm.menuItems[mitm.menuItems.length-2];
	} else {
		mitm.node2 = this["item"+dpth];
		mitm.menuItems[mitm.menuItems.length-1].node1 = mitm;
		//trace("ELSE: "+mitm);
	}
	yOffset += ySpacing;
} //end for

mitm.menuItems[mitm.menuItems.length-1].node2 = next_item;
next_item.node1 = mitm.menuItems[mitm.menuItems.length-1];	
}


function collapse(mitm) {

mitm.node2 = mitm.next_item;
mitm.next_item.node1 = mitm;
dpth1 = container.getNextHighestDepth();  

for (i=0; i<mitm.menuItems.length; i++) {
	//removeMovieClip(mitm.menuItems[i]);
	//trace(mitm.menuItems[i]);
	mitm.menuItems[i].dispatch();
}
mitm.menuItems[mitm.menuItems.length-1].node2 = undefined;
delete mitm.menuItems;
}


function build() {
//trace("BUILD MENU");
yOffset = 0;
for (i=0; i<xmlData.childNodes.length; i++) {
	dpth = this.getNextHighestDepth();
	attachMovie(xmlData.childNodes[i].attributes.template, "item"+dpth, dpth);
	this["item"+dpth].active = true;
	this["item"+dpth]._y = Math.round(yOffset);
	this["item"+dpth]._x = 0//5-10*Math.random();
	this["item"+dpth].xmlData = xmlData.childNodes[i];
	//trace("iTEM"+dpth+": "+this["item"+dpth].xmlData);
	this["item"+dpth].txt = xmlData.childNodes[i].attributes.label;
	menuItems.push(this["item"+dpth]);
	if (menuItems[menuItems.length-2] != undefined) {
		menuItems[menuItems.length-2].node2 = this["item"+dpth];
		menuItems[menuItems.length-1].node1 = menuItems[menuItems.length-2];
	}
	yOffset += ySpacing;		
}
}




mainXmlData.onLoad = function() {
xmlData = this.firstChild;
build(); //build menu
};

function init() {
//load xml
mainXmlData.load(xmlFileName);
unloadMovie(dummy);
}

init(); 





// //


function tweenfade(pos1, pos2) {
if (Math.abs(pos2-pos1)<= tweentoleration) {
	return pos2;
} else {
	return (pos1+.3*tweendecay*(pos2-pos1));
}
}

function tween(pos1, pos2) {
if (Math.abs(pos2-pos1)<=tweentoleration) {
	return pos2;
} else {
	return (pos1+tweendecay*(pos2-pos1));
}
}

// //

Endret av topvulture
Lenke til kommentar

embed src coden er

<p>
<object style="width: 600px; height: 400px;" width="600" height="400" data="flash/news_viewer.swf" type="application/x-shockwave-flash">
<param name="quality" value="best" />
<param name="scale" value="showall" />
<param name="wmode" value="window" />
<param name="src" value="flash/news_viewer.swf" />
</object>
</p>

 

xml

<?xml version="1.0"?>
<news>
	<newsitem template="newsitem" label="Vitae Metus Semper" date="06/04/2007">
		<newsitem template="text">Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Duis consectetuer lacus vitae metus semper mattis. Aenean eu erat nec nunc accumsan ultrices.Duis consectetuer lacus vitae metus semper mattis. Aenean eu erat nec nunc accumsan ultrices.</newsitem>							
	</newsitem>
	<newsitem template="newsitem" label="Lorem ipsum dolor" date="07/04/2007">
		<newsitem template="text">Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. </newsitem>
	</newsitem>
	<newsitem template="newsitem" label="Ullamco Laboris Nisi" date="08/04/2007">
		<newsitem template="text">Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</newsitem>
	</newsitem>
	<newsitem template="newsitem" label="Voluptate Velit" date="09/04/2007">
		<newsitem template="text">Laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. Laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</newsitem>
	</newsitem>

	<newsitem template="newsitem" label="Cillum Dolore" date="09/04/2007">
		<newsitem template="text">Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</newsitem></newsitem>

<newsitem template="newsitem" label="newteeestttlolol" date="06/01/2009">
		<newsitem template="text">How about we change our math a little and always round up. 
		The function we need is called the ceiling function because it rounds a number up to the “ceiling.”</newsitem>		
</newsitem>

</news>

Endret av topvulture
Lenke til kommentar

Du må nok wrappe tekstblokkene dine i CDATA-blokker:

<newsitem template="text">
<![CDATA[
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
]]>
</newsitem>

Lenke til kommentar

Dette fungerte for min del.

 

Jeg skrev inn hele URL-en til xmlen.

Nesten nederst i koden, din, før du begynner å unloade, la jeg til

 

mainXmlData.onLoad = function() {
xmlData = this.firstChild;
trace(xmlData.firstChild); //Denne linjen la jeg til
build(); //build menu
};

Output blir:

<newsitem template="newsitem" label="Vitae Metus Semper" date="06/04/2007"><newsitem template="text">
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
</newsitem></newsitem>

 

Ettersom dette er AS2 er det litt vanskeligere å forstå alt for min egen del.

Men det er jo ingen plass i koden din der det blir refferert til en classe der du lager noe TextField, eller noe form for TextField i koden du har delt med oss. Du får ikke vist noe tekst uten ett TextField i flashen din.

 

I AS3 måtte du gjort følgende for å få vist teksten fra XMLen din:

var myText:TextField = new TextField();
myText.height = 250;
myText.width = 250;
myText.x = 10;
myText.y = 10;
myText.text = xmlData.firstChild.firstChild.firstChild;
addChild(myText);

 

Evnt. lage ett fysisk dynamisk textfelt i fla. fila di og gi det ett instance.

dittInstance.text = xmlData.firstChild.firstChild.firstChild;

muligens det blir "_text" i AS2.

Lenke til kommentar

takk for svar :)

men den linja du la til hjalp ikke særlig, har egne as til tekstene igjen, jeg fant egentlig bare denne sourcen ute, men det var ingen tutorial med, så har bare tweaket en god del på den, men det var et rotete system personen hadde laget, kunne fint fått sett en god tutorial på dette med å lage en oppdateren newsfeed med bruk av xml og helst slik systemet var nå, med collapsing "menu".

inbefatter ikke nok flash kunnskaper for å kunne lage slike ting selv enda :/

Lenke til kommentar

trace(); funksjonen har ingen annen virkning enn å sende info til output vinduet, den påvirker ingenting annet i flashen din. Men det er en fin måte å feilsøke litt på.

 

http://www.kirupa.com/developer/flash/index.htm

her har du en del emner som blir godt forlart.

Husk at det er bade AS2 og AS3 der, så du burde bestemme deg for en av delene. Jeg dreiv lenge med AS2, men når jeg nå begynner å få satt meg inn i AS3 er alt veldig mye eklere og forståelig. Litt bratt læreingskurve, men det er verdt det. :)

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...