|
-
[RESOLVED] XML Format/AS Problem?
Hi Guys,
I am having a problem with using node-based XML (as opposed to attribute-based) to load content into a flash carousel I want to use as my website's main method of navigation (Lee Brimelowe tutorial).
The carousel in my site spins around, when you hover over an icon a tooltip appears, click on the icon and the icon is brought to the front and text and a further navigation button appear. All of the images, text, urls, etc. for the above are loaded from external XML files.
I intend on making the site multi-lingual, and because some of the languages have diacritics (umlaut ü, etc.) it looks as though I have to use CDATA to get the content to show properly in my movie. In order to use CDATA it looks as though I have to use node-based XML, and not attribute-based....
I made the changes to the XML file and the AS, but when I test the movie the carousel just doesn't appear on-stage.... I have been trying all sorts of stuff to fix this, but to no avail. Would somebody please be able to review the below AS and sample XML file and let me know if I am missing anything?
Here is the AS that should call this:
Actionscript Code:
xml.onLoad = function() { for (z=0; z<carouselClips.length; z++) {//<< loop through all clips in the array removeMovieClip(carouselClips[z]);//<< delete them } var nodes = this.firstChild.childNodes; numOfItems = nodes.length; for(var i=0;i<numOfItems;i++) { var t = home.attachMovie("item","item"+i,i+1); t.angle = i * ((Math.PI*2)/numOfItems); t.onEnterFrame = mover; t.toolText = nodes.childNodes[i].childNodes[1].firstChild.nodeValue; t.url = nodes.childNodes[i].childNodes[2].firstChild.nodeValue; t.content = nodes.childNodes[i].childNodes[3].firstChild.nodeValue; t.icon.inner.loadMovie(nodes.childNodes[i].childNodes[0].firstChild.nodeValue); t.r.inner.loadMovie(nodes.childNodes[i].childNodes[0].firstChild.nodeValue); t.icon.onRollOver = over; t.icon.onRollOut = out; t.icon.onRelease = released; carouselClips.push(t);//<< Push each clip into the array } }
XML file sample:
Actionscript Code:
<caricons_en> <icon> <image>"cam.png"</image> <tooltip>"Photos"</tooltip> <url>"http://www.google.com/"</url> <content>"This is a camera - it is used to take pictures."</content> </icon> <icon> <image>"cont.png"</image> <tooltip>"Contacts"</tooltip> <url>"http://www.google.com/"</url> <content>"Contact me!"</content> </icon> <icon> <image>"blog.png"</image> <tooltip>"Ships Log"</tooltip> <url>"http://www.google.com/"</url> <content>"Read all about it!"</content> </icon> <icon> <image>"skull.png"</image> <tooltip>"Stuff!"</tooltip> <url>"http://www.google.com/"</url> <content>"This is for stuff!"</content> </icon> <icon> <image>"tool.png"</image> <tooltip>"Materials"</tooltip> <url>"http://www.google.com/"</url> <content>"This will tell you what we used for buiding the boat."</content> </icon> <icon> <image>"vid.png"</image> <tooltip>"Videos"</tooltip> <url>"http://www.google.com/"</url> <content>"Click here for videos of the boat build."</content> </icon> </caricons_en>
Here is the full AS for reference:
Actionscript Code:
import mx.utils.Delegate; import mx.transitions.Tween; import mx.transitions.easing.*;
var numOfItems:Number; var radiusX:Number = 300; var radiusY:Number = 75; var centerX:Number = Stage.width / 2; var centerY:Number = Stage.height / 1.8; var speed:Number = 0.05; var perspective:Number = 130; var home:MovieClip = this; theText._alpha = 0; urlBtn._alpha = 0; var carouselClips:Array = new Array;//<< array of clips in the carousel var currentCarousel:Number = 1;//<<Keeps track of which XML is loaded var tooltip:MovieClip = this.attachMovie("tooltip","tooltip",10000); tooltip._alpha = 0;
var xml:XML = new XML(); xml.ignoreWhite = true;
xml.onLoad = function() { for (z=0; z<carouselClips.length; z++) {//<< loop through all clips in the array removeMovieClip(carouselClips[z]);//<< delete them } var nodes = this.firstChild.childNodes; numOfItems = nodes.length; for(var i=0;i<numOfItems;i++) { var t = home.attachMovie("item","item"+i,i+1); t.angle = i * ((Math.PI*2)/numOfItems); t.onEnterFrame = mover; t.toolText = nodes.childNodes[i].childNodes[1].firstChild.nodeValue; t.url = nodes.childNodes[i].childNodes[2].firstChild.nodeValue; t.content = nodes.childNodes[i].childNodes[3].firstChild.nodeValue; t.icon.inner.loadMovie(nodes.childNodes[i].childNodes[0].firstChild.nodeValue); t.r.inner.loadMovie(nodes.childNodes[i].childNodes[0].firstChild.nodeValue); t.icon.onRollOver = over; t.icon.onRollOut = out; t.icon.onRelease = released; carouselClips.push(t);//<< Push each clip into the array } }
function over() { //BONUS Section var sou:Sound = new Sound(); sou.attachSound("sover"); sou.start(); home.tooltip.tipText.text = this._parent.toolText; home.tooltip._x = this._parent._x; home.tooltip._y = this._parent._y - this._parent._height/2; home.tooltip.onEnterFrame = Delegate.create(this,moveTip); home.tooltip._alpha = 100; }
function out() { delete home.tooltip.onEnterFrame; home.tooltip._alpha = 0; }
function released() { //BONUS Section var sou:Sound = new Sound(); sou.attachSound("sdown"); sou.start(); home.tooltip._alpha = 0; for(var i=0;i<numOfItems;i++) { var t:MovieClip = home["item"+i]; t.xPos = t._x; t.yPos = t._y; t.theScale = t._xscale; delete t.icon.onRollOver; delete t.icon.onRollOut; delete t.icon.onRelease; delete t.onEnterFrame; if(t != this._parent) { var tw:Tween = new Tween(t,"_xscale",Strong.easeOut,t._xscale,0,1,true); var tw2:Tween = new Tween(t,"_yscale",Strong.easeOut,t._yscale,0,1,true); var tw3:Tween = new Tween(t,"_alpha",Strong.easeOut,100,0,1,true); } else { var tw:Tween = new Tween(t,"_xscale",Strong.easeOut,t._xscale,100,1,true); var tw2:Tween = new Tween(t,"_yscale",Strong.easeOut,t._yscale,100,1,true); var tw3:Tween = new Tween(t,"_x",Strong.easeOut,t._x,350,1,true); var tw4:Tween = new Tween(t,"_y",Strong.easeOut,t._y,500,1,true); var tw5:Tween = new Tween(theText,"_alpha",Strong.easeOut,0,100,1,true); theText.text = t.content; urlBtn._alpha = 100; var page = t.url; urlBtn.onRelease = function() { getURL(page, "_blank"); } var s:Object = this; tw.onMotionStopped = function() { s.onRelease = unReleased; } } } }
function unReleased() { //BONUS Section var sou:Sound = new Sound(); sou.attachSound("sdown"); sou.start(); urlBtn._alpha = 0; delete this.onRelease; var tw:Tween = new Tween(theText,"_alpha",Strong.easeOut,100,0,0.5,true); for(var i=0;i<numOfItems;i++) { var t:MovieClip = home["item"+i]; if(t != this._parent) { var tw:Tween = new Tween(t,"_xscale",Strong.easeOut,0,t.theScale,1,true); var tw2:Tween = new Tween(t,"_yscale",Strong.easeOut,0,t.theScale,1,true); var tw3:Tween = new Tween(t,"_alpha",Strong.easeOut,0,100,1,true); } else { var tw:Tween = new Tween(t,"_xscale",Strong.easeOut,100,t.theScale,1,true); var tw2:Tween = new Tween(t,"_yscale",Strong.easeOut,100,t.theScale,1,true); var tw3:Tween = new Tween(t,"_x",Strong.easeOut,t._x,t.xPos,1,true); var tw4:Tween = new Tween(t,"_y",Strong.easeOut,t._y,t.yPos,1,true); tw.onMotionStopped = function() { for(var i=0;i<numOfItems;i++) { var t:MovieClip = home["item"+i]; t.icon.onRollOver = Delegate.create(t.icon,over); t.icon.onRollOut = Delegate.create(t.icon,out); t.icon.onRelease = Delegate.create(t.icon,released); t.onEnterFrame = mover; } } } } }
function moveTip() { home.tooltip._x = this._parent._x; home.tooltip._y = this._parent._y - this._parent._height/2; } enBtn.onRelease = function() {
switch (currentCarousel) { default: xml.load("caricons_en.xml"); currentCarousel = 1; break; } } plBtn.onRelease = function() {
switch (currentCarousel) { default: xml.load("caricons_pl.xml"); currentCarousel = 3; break; } } deBtn.onRelease = function() {
switch (currentCarousel) { default: xml.load("caricons_de.xml"); currentCarousel = 2; break; } } nlBtn.onRelease = function() {
switch (currentCarousel) { default: xml.load("caricons_nl.xml"); currentCarousel = 4; break; } }
xml.load("caricons_en.xml");
function mover() { this._x = Math.cos(this.angle) * radiusX + centerX; this._y = Math.sin(this.angle) * radiusY + centerY; var s = (this._y - perspective) /(centerY+radiusY-perspective); this._xscale = this._yscale = s*100; this.angle += this._parent.speed; this.swapDepths(Math.round(this._xscale) + 100); }
this.onMouseMove = function() { speed = (this._xmouse-centerX)/10000; }
If I can get this issue solved (plus one other I posted about today!), this would see me through to the end of development on this part of my site - any help would be truly appreciated!
lobster_bot
-
Resolved
Hi Guys,
The questions I asked in this post were resolved in another post. You can check it out here: http://board.flashkit.com/board/showthread.php?t=819784
Thanks!
lobster_bot
Tags for this Thread
Posting Permissions
- You may not post new threads
- You may not post replies
- You may not post attachments
- You may not edit your posts
-
Forum Rules
|
Click Here to Expand Forum to Full Width
|