I'm writing a little application to run a course, and the engine creates the
navigation menu putting labels in the button etc...
So, as far as I change things like a dynamic text that's on the stage with
something like
mybutton.itemText.text =
my_xml.childNodes[0].childNodes[index-1].attributes["Label"];
this works, but what If I want to change a variable declared in the button?
I would like to retrieve from an XML the movie I want to load pressing this
particular button, but seems like the scope of the "designed" objects and
the programmed object is a little different, since with
in the button movieclip
************************
var myMovieDelegate:String = new String();
var selectedButton:Boolean = new Boolean();
-------------------------------------------
in the engine Class
mybutton.myMovieDelegate(my_xml.childNodes[0].childNodes[index-1].attributes["MovieToLoad"]);
------------------------------------------
this doesn't works, as doesn't works creating a function in the button to
set the variable like
function setMovieDelegate(movie:String):Void {
myMovieDelegate = movie;
}
Where's the problem?
I'll add the complete code here
--------------
class courseEngine {
public var addEventListener:Function;
public var removeEventListener:Function;
private var dispatchEvent:Function;
private var ayudaOpen:Boolean = new Boolean();
function courseEngine() {
mx.events.EventDispatcher.initialize(this);
ayudaOpen = false;
}
public function initMenu(drawInIt:MovieClip, my_xml:XML) {
drawInIt.attachMovie("mcMenuUpBorder", "upBorder",
drawInIt.getNextHighestDepth());
drawInIt.attachMovie("mcMenuUnit", "menuMC1",
drawInIt.getNextHighestDepth(), {_x:0, _y:13});
initButton(drawInIt.menuMC1, my_xml, 1);
for (var i:Number = 2;
i<=my_xml.childNodes[0].attributes["NumberOfItems"]; i++) {
drawInIt.menuMC1.duplicateMovieClip("menuMC"+i, i);
var pippo:String = new
String(my_xml.childNodes[0].childNodes[i-1].attributes["Label"]);
trace(drawInIt["menuMC"+i]);
_root.drawInIt["menuMC"+i].setMovieDelegate(pippo);
initButton(drawInIt["menuMC"+i], my_xml, i);
drawInIt["menuMC"+i]._y =
drawInIt["menuMC"+(i-1)]._y+drawInIt["menuMC"+(i-1)].mcGreenBox._height;
}
var u:Number = new
Number(my_xml.childNodes[0].attributes["NumberOfItems"]);
drawInIt.attachMovie("mcMenuUnderBorder", "downBorder",
drawInIt.getNextHighestDepth(), {_x:0, _y:u*35+13});
var myDropFilter = new flash.filters.DropShadowFilter();
var myFilters:Array = drawInIt.filters;
myFilters.push(myDropFilter);
drawInIt.filters = myFilters;
}
private function initButton(button:MovieClip, my_xml:XML, index:Number)
{
button.itemText.text =
my_xml.childNodes[0].childNodes[index-1].attributes["Label"];
if (button.itemText.textHeight<16) {
button.itemText._y = button.itemText._y+6;
button.itemText._height = 16;
}
}
public function ayudaIsOpen():Boolean {
trace("passo da questa funzione");
return ayudaOpen;
}
public function callMe():Void {
dispatchEvent({type:"hearing", target:this});
}
public function closemcMenu(myx:Number, myy:Number, myButtonX:Number,
myMenu:MovieClip, myButton:MovieClip):Void {
myMenu.slideTo(myx, myy, 0.5, "easeInOutCircular");
myButton._x = myButtonX;
ayudaOpen = false;
}
public function openmcMenu(myx:Number, myy:Number, myButtonX:Number,
myMenu:MovieClip, myButton:MovieClip):Void {
myMenu.slideTo(myx, myy, 0.5, "easeInOutCircular");
myButton._x = myButtonX;
ayudaOpen = true;
}
public function menuDispatcher(butName:String){
var eventObject:Object = {target:this, type:'pressed'};
eventObject.buttonPressed = butName;
//eventObject.whereDrawn = cliptoDrawin.square_mc;
dispatchEvent(eventObject);
}
}
--------------
code in the first frame
var my_xml:XML = new XML();
var myEngine:courseEngine = new courseEngine();
var oViewListener:Object = new Object();
my_xml.ignoreWhite = true;
my_xml.onLoad = function(success) {
myEngine.initMenu(mcMenuContainer, my_xml);
};
my_xml.load("Menu.xml");
oViewListener.pressed = function(oEvent:Object):Void {
trace(oEvent.type);
trace(oEvent.buttonPressed);
};
myEngine.addEventListener("pressed", oViewListener);
--------------
and this is the code in the first frame of the movieclip that works as a
building block of the menu
this.useHandCursor = true;
var oResetColor:Object = {ra:100, rb:0, ga:100, gb:0, ba:100, bb:0, aa:100,
ab:0};
var oPressColor:Object = {ra:100, rb:100, ga:100, gb:100, ba:100, bb:100,
aa:100, ab:100};
var oOverColor:Object = {ra:100, rb:0, ga:100, gb:50, ba:50, bb:50, aa:100,
ab:50};
var mcGboxColor:Object = new Color(mcGreenBox);
var myMovieDelegate:String = new String();
var selectedButton:Boolean = new Boolean();
function setMovieDelegate(stringSomething:String) {
myMovieDelegate = stringSomething;
}
onRollOver = function () {
mcGboxColor.setTransform(oOverColor);
};
onRollOut = function () {
if (selectedButton == true) {
} else {
mcGboxColor.setTransform(oResetColor);
}
};
onPress = function () {
_root.myEngine.menuDispatcher(this);
mcGboxColor.setTransform(oPressColor);
};
onRelease = function () {
mcGboxColor.setTransform(oOverColor);
};
onReleaseOutside = function () {
if (selectedButton) {
} else {
mcGboxColor.setTransform(oResetColor);
}
};
_______________________________________________
[email protected]
To change your subscription options or search the archive:
http://chattyfig.figleaf.com/mailman/listinfo/flashcoders
Brought to you by Fig Leaf Software
Premier Authorized Adobe Consulting and Training
http://www.figleaf.com
http://training.figleaf.com