Have you tried:
colorBox.addEventListener("change", changeObj);
or
colorBox.addEventListener("change" Delegate.create(this, changeObj);
I think you got your listener the wrong way around, but might be wrong?
Karl DeSaulniers wrote:
Hey Glen,
Thanks for that, but I am not using a class in this case to get the
items, just a function.
Maybe I should be, but I could never figure out how to use classes and
there may lie-in the problem.
Think Flash 8. :) Sorry if that hurts a little..
Here is what I have //shortened
AS2 Code:::
import mx.controls.ComboBox;
import mx.utils.Delegate;
var thumbHolder:Object = new Object();
var picBox:MovieClip = new MovieClip();
var colorBox:ComboBox = new ComboBox();
var picturesArry = [];
var colorHolder = [];
//Code for loading above arrays not included, but they load fine.
var pr:Number = -1;
function loadItems() {
if (pr < (numimages - 1)) {
pr++;
thumbHolder = attachMovie("Affiliate_MC", "Affiliate_MC" + pr,
pr);
thumbHolder.ID = pr;
var parentID = thumbHolder.ID;
thumbHolder.LoadVars(parentID);
thumbHolder._x = 0;
thumbHolder._y = pr * spacing;
picBox = thumbHolder.attachMovie("picture_box", "picture_box",
thumbHolder.getNextHighestDepth());
picBox._width = 192;
picBox._height = 152;
picBox._x = 14;
picBox._y = 11;
colorBox = thumbHolder.attachMovie("FComboBoxSymbol", "os1_" +
pr, thumbHolder.getNextHighestDepth());
colorBox._width = 100;
colorBox._height = 17;
colorBox._x = 264;
colorBox._y = 110;
colorBox.enabled = true;
thumbHolder.pic = picturesArry[thumbHolder.ID][0];
thumbHolder["picture_box"].loadMovie(thumbHolder.pic,0);
var Colors:Array = new Array({label:"Choose Color", data:""});
colorBox.rowCount = colorHolder[pr].length;
// populate dataProvider
var colorBoxLength:Number = Colors.length;
for (n = 0; n < colorHolder[pr].length; n++) {
Colors.push({label:colorHolder[pr][n],
data:colorHolder[pr][n]});
colorBoxLength++;
}
// set dropdown list
colorBox.setDataProvider(Colors);
if (colorBoxLength < 3) {
colorBox.selectedItem = 1;
} else {
colorBox.selectedItem = 0;
}
var changeObj:Object = new Object();
changeObj = function(evt_obj:Object) {
var num:Number = thumbHolder.ID;
var selectNum:Number = colorBox.selectedIndex;
if (selectNum <= 1) {
var pic = picturesArry[num][0];
thumbHolder["picture_box"].loadMovie(pic,0);
thumbHolder.LoadVars(pic);
} else if (selectNum > 1) {
var pic = picturesArry[num][selectNum];
thumbHolder["picture_box"].loadMovie(pic,0);
thumbHolder.LoadVars(pic);
} else {
_root.itemSelection_mc.satusTXT.htmlText = "ComboBox
did not change";
}
};
colorBox.addEventListener(changeObj,this);
}
}
I am thinking that I need every "colorBox" to have its own "changeObj" or
I need to be able to reference the "picBox" that is inside with that
colorBox thats being changed.
Structure of a single item is as follows:
Main Stage -
- thumbHolder (Main item MC)
- picBox (preview MC)
- colorBox (comboBox selection for this item)
Karl
On Nov 19, 2009, at 7:08 PM, Glen Pike wrote:
Hi,
Are you doing something like the following - you need to use the
Delegate.create function to attach "scope" to your event handlers. I
can't remember if you can pass in the event object or not - try it?
HTH
Glen
import mx.utils.Delegate;
class MyMovieClip extends MovieClip {
private var colorBox:ComboBox;
//...
function stuffHasLoaded():Void {
colorBox.addEventListener("change", Delegate.create(this, change));
}
function change():Void {
trace("Hello from " + this + ".change");
var selected:Number = colorBox.selectedIndex;
//...
}
}
_______________________________________________
Flashcoders mailing list
[email protected]
http://chattyfig.figleaf.com/mailman/listinfo/flashcoders
Karl DeSaulniers
Design Drumm
http://designdrumm.com
_______________________________________________
Flashcoders mailing list
[email protected]
http://chattyfig.figleaf.com/mailman/listinfo/flashcoders
_______________________________________________
Flashcoders mailing list
[email protected]
http://chattyfig.figleaf.com/mailman/listinfo/flashcoders