I’m building navigation that reads an XML file, creates a button array, and then assigns an image, link and label to each button. A onRelease action is attached to each button. A Release event calls a function “buttonClick” which should load a new swf file. The problem is the button does not respond.
This is my first AS site, and I just can’t seem to get my mind around what’s happening (or not happening) here.
If you can help, I would really appreciate it.
I am using Flash 8 and AS 2
this at buttonClick = _level0
target_mc is _level0.masterClip.mainNavClip.buttonHolderClip.navButton*
Here is abbreviated code. Working code is attached as a zip (I hope).
// <----- MAIN NAVIGATION
// <
// <
// total # of buttons & headers
//
var nButtons:Number = label_array.length;
trace ("Number of Buttons = " + nButtons);
//var buttonImageLoader:MovieClipLoader = new MovieClipLoader ();
//var buttonImageListener:Object = new Object ();
// create buttonHolders
//
for (var i:Number = 0; i < nButtons; i++) {
// For each button node create a MovieClip, "buttonHolder*"
// Tag with unique identifier i and Assign depth = i
//
buttonHolderClip.createEmptyMovieClip ("navButton" + i, i);
// Create a variable to use as a handle the new button
//
var navButton:MovieClip = buttonHolderClip["navButton" + i];
trace ("navButton* = " + buttonHolderClip["navButton" + i]);
// load button images
//
buttonImageLoader.loadClip (image_array*, navButton);
// Create buttonImage inside navButton to receive
// button images
//
var id:Number = navButton.getNextHighestDepth();
var buttonImage:MovieClip = navButton.createEmptyMovieClip(buttonImageHolder, id);
buttonImage._x = 0;
buttonImage._y = 0;
// Create buttonLabel inside navButton to receive
// button labels
//
var id:Number = navButton.getNextHighestDepth();
var buttonLabel:MovieClip = navButton.createEmptyMovieClip(buttonLabelHolder, id);
buttonLabel._x = 0;
buttonLabel._y = 0;
trace("navButton ="+navButton);
// This code is called for each value of "i" by imageListener
// when the corresponding button image has completely loaded
// which effectively couples it into the "for" loop
//
buttonImageListener.onLoadInit = function (target_mc:MovieClip) {
trace ("buttonImageListener Invoked");
// Attach variable linkURL to target_mc movie clip.
//
target_mc.linkURL = link_array[nCounter];
trace ("target_mc is " + target_mc);
trace ("target_mc link is " + target_mc.linkURL);
trace("this at onPress ="+this);
trace("root at onPress ="+_root);
// Button press calls buttonClick function
//
target_mc.onPress = _level0.buttonClick;
// layout button on stage
// Use hard coded numbers if button image is not used
// set to target_mc values if image is used
//
var navButtonHeight:Number = 16;
var navButtonWidth:Number = 120;
if (label_array[nCounter] == "ABOUT") {
target_mc._y = navButtonHeight * nCounter + 5;
} else {
if (label_array[nCounter] == "PRACTICE" || label_array[nCounter] == "PORTFOLIO" || label_array[nCounter] == "CLIENTS" || label_array[nCounter] == "CONTACT") {
target_mc._y = navButtonHeight * nCounter + 8;
} else {
target_mc._y = navButtonHeight * nCounter + 8;
}
}
trace ("Button yPosition" + nCounter + " = " + target_mc._y);
// Add text field for button label
//
var buttonText:TextField = target_mc.createTextField ("buttonLabelField", nCounter + 100, 0, 0, 100, 16);
buttonText.html = true;
buttonText.align = left;
buttonText.border = true;
buttonText.selectable = false;
buttonText.multiline = false;
buttonText.wordWrap = false;
buttonText.embedFonts = true;
buttonText.antiAliasType = "advanced";
buttonText.styleSheet = flashStyles;
if (label_array[nCounter] == "PRACTICE" || label_array[nCounter] == "ABOUT" || label_array[nCounter] == "PORTFOLIO" || label_array[nCounter] == "CLIENTS" || label_array[nCounter] == "NEWS" || label_array[nCounter] == "CONTACT") {
buttonText.htmlText = "<span class='navHead'>" + label_array[nCounter] + "</span>";
} else {
if (label_array[nCounter] == "Expertise" || label_array[nCounter] == "Industry") {
buttonText.htmlText = "<span class='navSubHead'>" + label_array[nCounter] + "</span>";
} else {
buttonText.htmlText = "<a href='target_mc.linkURL'>" + label_array[nCounter] + "</a>";
}
}
trace ("buttonText is =" + label_array[nCounter]);
trace ("Active link = " + target_mc.linkURL);
nCounter += 1;
}
}
buttonImageLoader.addListener(buttonImageListener);
trace(">>>>>");
trace("this at buttonClick = "+this);
trace(">>>>>");
// Event handlers
//
function buttonClick():Void {
trace("$$$$$$$$$$");
}