PDA

View Full Version : Method call not doing anything



fried
February 5th, 2008, 07:45 AM
Hi guys.

I have to separate classes, on for a header image and the other for a navigation bar. When the user clicks a specific button on the navigation bar, I would like the images in the header to change accordingly. Here is the code:

HeaderClass.as


package com.bethroi
{

import flash.display.*;
import flash.net.*;
import flash.events.*;
import caurina.transitions.*;
import flash.utils.Timer;
import com.bethroi.NavClass;

public class HeaderClass extends Sprite
{
private var xml:XML;
private var xmlList:XMLList;
private var xmlLoader:URLLoader;
private var imageLoader:Loader;
public var child1:String;
public var child2:String;
private var headerImages:HeaderImages;
private var logoClip:LogoClip;
private var exLoader:ExLoader;
public var childRequest:URLRequest;
public var whichChild:String;

public function HeaderClass()
{
xmlLoader = new URLLoader();
init();
//trace(child1);

headerImages = new HeaderImages();
headerImages.x = 0;
headerImages.y = -500;
addChild(headerImages);
Tweener.addTween(headerImages,{x:0, y:-350, time:2});

logoClip = new LogoClip();
logoClip.alpha = 0;
logoClip.x = -230;
headerImages.addChild(logoClip);
Tweener.addTween(logoClip,{alpha:1, time:2});

}

private function init():void
{
xmlLoader.addEventListener(Event.COMPLETE, xmlLoaded);

try
{
xmlLoader.load(new URLRequest("data/header.xml"));
}
catch(error:Error)
{
trace("Error loading XML File");
}
}

public function xmlLoaded(event:Event):void
{
xml = XML(event.target.data);
xmlList = xml.children();

child1 = xmlList[0].attribute("source");
child2 = xmlList[1].attribute("source");

imageLoader = new Loader();
loadRequest(child1);
imageLoader.x = headerImages.x - 372;
imageLoader.y = -82;
imageLoader.alpha = 0;
headerImages.addChild(imageLoader);
headerImages.setChildIndex(imageLoader,1);

exLoader = new ExLoader();
headerImages.addChild(exLoader);

imageLoader.contentLoaderInfo.addEventListener(Pro gressEvent.PROGRESS, loadProgress);
imageLoader.contentLoaderInfo.addEventListener(Eve nt.COMPLETE, loadComplete);
}

private function loadProgress(event:ProgressEvent):void
{
var percent:Number = Math.round((event.bytesLoaded/event.bytesTotal)*100);
exLoader.loaderTxt.text = String(percent);
}

private function loadComplete(event:Event):void
{
exLoader.visible = false;
Tweener.addTween(imageLoader,{alpha:1,time:1});
//Tweener.addTween(imageLoader,{_brightness:10,time: 1});
}

public function loadRequest(whichChild:String):void
{
childRequest = new URLRequest(whichChild);
imageLoader.load(childRequest);
//trace(navClass.clickCheck);
trace(whichChild);
}

}
}

NavClass.as



package com.bethroi
{
import flash.display.*;
import flash.events.*;
import flash.filters.*;
import caurina.transitions.*;
import com.bethroi.HeaderClass;

public class NavClass extends Sprite
{
private var navBar:NavBar;
private var buttonArray:Array = ["HOME", "ABOUT US", "TESTIMONIAL", "GALLERY", "CONTACT US"];
private var urlArray:Array = ["child1", "child2", "TESTIMONIAL", "GALLERY", "CONTACT US"];
private var temp:DisplayObject;
private var buttonHolder:ButtonHolder;
private var buttonClip:MovieClip;
public var clickCheck:String;
private var headerClass:HeaderClass = new HeaderClass();
private var ellipseSprite:Sprite;
private var ellipseGlowFilter:GlowFilter;
private var ellipseBlurFilter:BlurFilter;

public function NavClass()
{
navBar = new NavBar();
navBar.x = 0;
navBar.y = 2000;
addChild(navBar);
this.setChildIndex(navBar,0);
Tweener.addTween(navBar,{x:0, y:-238, time:2});

createButtons();
}

private function createButtons():void
{
buttonClip = new MovieClip();

for(var i:uint = 0; i<buttonArray.length; i++)
{
buttonHolder = new ButtonHolder();
navBar.addChild(buttonHolder);
buttonHolder.x = -135 + ((buttonHolder.width)+12)*i;
buttonHolder.y = 25;
buttonHolder.name = "buttonHolder"+(i+1);
buttonHolder.buttonTxt.text = buttonArray[i];
//trace(buttonHolder.name);
buttonHolder.buttonMode = true;
buttonHolder.mouseChildren = false;
buttonHolder.addEventListener(MouseEvent.CLICK, doClick);
buttonHolder.addEventListener(MouseEvent.MOUSE_OVE R, mouseOver);
buttonHolder.addEventListener(MouseEvent.MOUSE_OUT , mouseOut);
}


}

private function doClick(event:MouseEvent):void
{

if(event.target.name == "buttonHolder1")
{
headerClass.loadRequest(headerClass.child1);
clickCheck = "HOME";
//trace(clickCheck);
//trace(urlArray[0]);
}
else if(event.target.name == "buttonHolder2")
{
headerClass.loadRequest(headerClass.child2);
clickCheck = "ABOUT US";
//trace(urlArray[1]);
}
}
}
}

when a button is clicked trace(whichChild); traces the path correctly, but the image does not load in the imageLoader.

Any Help would be appreciated.

Thanks.

Felixz
February 5th, 2008, 08:18 AM
imageLoader is not added to DisplayList,

addChild(navBar);this.setChildIndex(navBar,0);can be replaced by
addChildAt(navBar,0);And add that event
xmlLoader.addEventListener(IOErrorEvent.IO_ERROR,_ IOErrorHandler);instead try {} catch(error:Error) {} which would be more usefull here
public function xmlLoaded(event:Event):void {
try xml = XML(event.target.data) catch(error:Error) trace(error.message);

fried
February 5th, 2008, 08:31 AM
Hi Felixz,

Thanks for the tips.

But it is being added, in the xmlLoaded function:


headerImages.addChild(imageLoader);

In the same function


loadRequest(child1);

loads the first image. But when clicking on the buttons, the image does not change..