After struggling for days, it seems I finally got the variable referencing between classes and custom event problems sorted out. Now I got a question regarding the Error #2044 and Error #2035. The error reads like this:
Error #2044: Unhandled IOErrorEvent:. text=Error #2035: URL Not Found.
I’ve put all the swf in the same directory, so I don’t think that is the problem. Could it be that my XML file is in another directory that’s causing the problem? I also heard having quotes in the URL in the XML file could also be problematic. Is that true?
Here are my AS and my XML file. Thank you for your help!
Index.as
package com {
import flash.display.MovieClip;
import flash.display.Loader;
import flash.events.*;
import flash.net.URLRequest;
import com.greensock.*;
import com.NavBar;
import com.LoadXML;
public class Index extends MovieClip {
private var _logo:MovieClip = new Logo();
private var _navBar:NavBar;
private var _navData:XMLList;
private var _appData:LoadXML;
private var _xml:XML;
public var _swfLoader = new Loader();
public function Index():void {
addChild(_logo);
TweenLite.from(_logo, 1, {alpha:0});
_appData = new LoadXML("xml/nav.xml");
_appData.addEventListener("xmlLoaded", onLoadXML, false, 0, true);
addChild(_swfLoader);
_swfLoader.y = 197;
addEventListener("loadSwf", swfLoader);;
}
private function onLoadXML(evt:Event):void {
_navBar = new NavBar(this, _appData.xml.buttons, _swfLoader);
_navBar.x = 187;
_navBar.y = 72;
addChild(_navBar);
}
private var _pathToSwf:String;
private var _request:URLRequest;
public function swfLoader(evt:Event):void {
_pathToSwf = new String(_appData.xml.buttons.button.@path);
_request = new URLRequest(_pathToSwf);
_swfLoader.load(_request);
trace(_appData.xml.buttons.button.@path);
}
}
}
NavBar.as
package com {
import flash.events.Event;
import flash.events.MouseEvent;
import flash.display.MovieClip;
import flash.display.Loader;
import flash.net.*;
import com.greensock.*;
import com.greensock.easing.*;
import com.LoadXML;
public class NavBar extends MovieClip {
private var _app:MovieClip;
private var _buttonSpacing:int;
private var _xml:XML;
private var _navData:XMLList;
private var _swfLoader:Loader
public function NavBar(app:MovieClip, navData:XMLList, swfLoader) {
_app = app;
_navData = navData;
_swfLoader = swfLoader;
_buttonSpacing = _navData.@spacing;
build();
}
private function build():void {
for (var i:int; i < _navData.button.length(); i++) {
var menuBtn:MenuButton =
new MenuButton(_navData.button*.@label);
menuBtn.x = 20 + (menuBtn.width + _buttonSpacing) * i;
addChild(menuBtn);
addEventListener(MouseEvent.MOUSE_OVER, onOver, false, 0, true);
addEventListener(MouseEvent.MOUSE_OUT, onOut, false, 0, true);
addEventListener(MouseEvent.CLICK, onClick, false, 0, true);
}
}
public function onClick(evt:MouseEvent):void {
parent.dispatchEvent(new Event("loadSwf"));
}
private function onOver(evt:MouseEvent):void {
TweenMax.to(evt.target, 0.5, {colorTransform:{tint:0xff0000, tintAmount:0.75}});
}
private function onOut(evt:MouseEvent):void {
TweenMax.to(evt.target, 0.5, {colorTransform:{tint:0x333333, tintAmount:0.75}});
}
}
}
package com {
import flash.display.MovieClip;
import flash.text.TextField;
import flash.events.*;
public class MenuButton extends MovieClip {
public var _label:TextField;
private var _navData:XMLList;
private var _xml:XML;
public function MenuButton (labl:String) {
_label.text = labl;
_label.mouseEnabled = false;
buttonMode = true;
useHandCursor = true;
addEventListener(Event.ADDED_TO_STAGE, onAdded, false, 0, true);
}
private function onAdded(evt:Event):void {
removeEventListener(Event.ADDED_TO_STAGE, onAdded);
}
}
}
XML File
<nav>
<buttons spacing="2">
<button page="_about" label="About" path="about.swf" />
<button page="_work" label="Work" path="work.swf" />
<button page="_contact" label="Contact" path="contact.swf" />
</buttons>
</nav>