Actionscript-XML Interaction

From Wikicliki
Revision as of 00:58, 13 August 2009 by 116.12.248.162 (talk)

Jump to: navigation, search
<box>
	<thing>
		<name>apple</name>
		<colour>red</colour>
	</thing>
	<thing>
		<name>elephant</name>
		<colour>gray<colour>
	</thing>
</box>


  • APPLE is this.firstChild.childNodes[0].childNodes[0].firstChild.nodeValue;
  • RED is this.firstChild.childNodes[0].childNodes[1].firstChild.nodeValue;
  • ELEPHANT is this.firstChild.childNodes[1].childNodes[0].firstChild.nodeValue;
  • GRAY is this.firstChild.childNodes[1].childNodes[1].firstChild.nodeValue;


Working Example

loading in the xml

var bannersXML:XML = new XML();
bannersXML.ignoreWhite = true;
bannersXML.load("banners3.xml");

xml structure

<rotator isRandom="false">
  <bannerTime>5</bannerTime>
  <numberOfBanners>3</numberOfBanners>
  <banners showHeader="true">
    <banner>
      <name>Banner 1</name>
      <body>Lorem Ipsum</body>
      <imagePath>rotator/newpro1.jpg</imagePath>
      <bannerTime>3</bannerTime>
      <link>url</link>
    </banner>
    <banner>
      <name>Banner 2</name>
      <body>Lorem Ipsum</body>
      <imagePath>rotator/newpro2.jpg</imagePath>
      <bannerTime>10</bannerTime>
      <link>url</link>
    </banner>
  </banners>
</rotator>

AS 2.0

  • firstChild is the next level, childNode of the firstChild is the level below that
  • first childnode is childNodes[0]
  • second childnode is childNode[1]
  • third childnode is childNode[2] you get the idea
	for (var i = 0; i<numberOfBanners; i++) {
		banners.push(this.firstChild.childNodes[2].childNodes[bannerSequence[i]].firstChild.firstChild.toString());
		bodyTexts.push(this.firstChild.childNodes[2].childNodes[bannerSequence[i]].childNodes[1].firstChild.nodeValue);
		imagePaths.push(this.firstChild.childNodes[2].childNodes[bannerSequence[i]].childNodes[2].firstChild.nodeValue);
		links.push(this.firstChild.childNodes[2].childNodes[bannerSequence[i]].childNodes[3].firstChild.nodeValue);

// loop: draw box and print number inside it then repeat and draw the next box on the right of the first box and repeat

		_root.wn.banner_mc3.createEmptyMovieClip("ButtonImage"+i, i+20);
		eval("ButtonImage"+i).lineStyle(2,0xCCCCCC,20);
		eval("ButtonImage"+i).beginFill(0xCCCCCC,20);
		eval("ButtonImage"+i).lineTo(-5,0);
		eval("ButtonImage"+i).lineTo(-5,20);
		eval("ButtonImage"+i).lineTo(15,20);
		eval("ButtonImage"+i).lineTo(15,0);
		eval("ButtonImage"+i).lineTo(-5,0);
		eval("ButtonImage"+i).endFill();
		eval("ButtonImage"+i)._x = 20+i*24;
		eval("ButtonImage"+i)._y = 10;
		_root.wn.banner_mc3.createTextField("ButtonNum"+i, i+10, 0, 3, 20, 20);
		eval("ButtonNum"+i).text = i+1;
		var prufont:TextFormat = new TextFormat();
		prufont.size = 13;
		prufont.font = "Arial";
		eval("ButtonNum"+i).setTextFormat(prufont);
		eval("ButtonNum"+i)._x = 20+i*24;
		eval("ButtonNum"+i)._y = 10;
		

		eval("ButtonImage"+i).onRollOver = function() {
			trace("rolloverbuttonmoon");
		myColor = new Color(this);
		myColor.setRGB(0xff0000, 40);
		}
		eval("ButtonImage"+i).onRollOut = function() {
			trace("rolloverbuttonmoon");
		myColor = new Color(this);
		myColor.setRGB(0xCCCCCC, 20);
		}


Another Implementation

xmlette = this.firstChild;
total = xmlette.childNodes.length;
image = [];
header = [];
subheader = [];
for (k=0; k<total; k++) {
image[k] = xmlette.childNodes[k].childNodes[0].firstChild.nodeValue;
header[k] = xmlette.childNodes[k].childNodes[1].firstChild.nodeValue;
subheader[k] = xmlette.childNodes[k].childNodes[2].firstChild.nodeValue;
}

a = 0;
aleft = a-1;
aright = a+1;

avalue_txt.text = a; // this for cheking
arightvalue_txt.text = aright;
aleftvalue_txt.text = aleft; 
		
container.loadMovie(image[a], 1);
containerleft.loadMovie(image[aleft], 1); // container for the slide before
containerright.loadMovie(image[aright], 1); // container for the slide after



<slides>
	<slide>
		<image>swf/filename.swf</image>
		<header></header>
		<subheader></subheader>
	</slide>
</slides>


One More

with thanks to Kun:


function readysteadygoforKun2(fileNum,newballNumber){
	//trace("READY KUN!")
	momo.enabled = false;
	itHasMoved = 1;
	subHeader._visible = 1;
	currentLoaded_txt._visible = 1;
	destinoXML = new XML();
	destinoXML.ignoreWhite = true;
	destinoXML.onLoad = function(){
		//trace("XML LOADED");
		loadXMLKun(fileNum);
	}
	var xmlFileName = "cat"+newballNumber+".xml";
	loadedFile = "cat"+newballNumber;
	//trace("xmlFileName: "+xmlFileName);
	destinoXML.load(xmlFileName);
	//trace("DONE");
	pChecker();		
}

function loadXMLKun(fileNum) {
	xmlNode = destinoXML.firstChild;
	//trace("xmlNode: "+destinoXML)
	image = [];
	header = [];
	subheader = [];
	total = xmlNode.childNodes.length;
	for (k=0; k<total; k++) {
		image[k] = xmlNode.childNodes[k].childNodes[0].firstChild.nodeValue;
		header[k] = xmlNode.childNodes[k].childNodes[1].firstChild.nodeValue;
		subheader[k] = xmlNode.childNodes[k].childNodes[2].firstChild.nodeValue;
	}
	ptotal_txt.text = total;
	loadSectionKun(fileNum);
	pChecker();
}

function loadSectionKun(fileNum){
	p = fileNum;
	pleft = p+1;
	pvalue_txt.text = p;
	pleftvalue_txt.text = pleft;

	container._alpha = 0;
	trace("fileNum: "+fileNum)
	cat_txt.text = fileNum;
	trace("image[fileNum]: "+image[fileNum])
	container.loadMovie(image[fileNum],1);
		
	Header.text = header[fileNum];
	subHeader.text = subheader[fileNum];
	content_txt.text = image[fileNum];
	pChecker();		
}