Skip to main content
Known Participant
January 8, 2014
Answered

dynamic menu in AS3

  • January 8, 2014
  • 1 reply
  • 930 views

I would like to create in AS3, something like, it's in AS2

//_root

var menuArray:Array=new Array("menu0","menu1","menu2","menu3","menu4","menu5");

var gap:Number=10;

var xmenu:Number=10;

for (var i:Number=0;i<menuArray.length;i++){

    this.attachMovie("menu_bot", "menu"+i, this.getNextHighestDepth(), {_x:xmenu, _y:100});

    xmenu=xmenu+this["menu"+i]._width+gap;

    this["menu"+i].num=i;

    }

//menu_bot

var num:Number;

textM.text=_root.menuArray[num];

this.onPress=function(){

    trace(num);

    }

www.4x4nz.sk/downloaded /dinamikmenuas2.fla

This topic has been closed for replies.
Correct answer Ned Murphy

The AS3 code would be something along the lines of...

var menuArray:Array=new Array("menu0","menu1","menu2","menu3","menu4","menu5");

var gap:Number=10;
var xmenu:Number=10;

for (var i:Number=0;i<menuArray.length;i++){

    var ClassRef:Class = Class(getDefinitionByName("menu"+i));
    var classInstance:* = new ClassRef();
    classInstance.x = xmenu;
    classInstance.y = 100;
    addChild(classInstance);
    xmenu=xmenu+classInstance.width+gap;
    classInstance.num=i;
   classInstance.addEventListener(MouseEvent.CLICK, traceNum);
}

function traceNum(evt:MouseEvent):void {
   trace(evt.currentTarget.num)
}

1 reply

Ned Murphy
Ned MurphyCorrect answer
Legend
January 8, 2014

The AS3 code would be something along the lines of...

var menuArray:Array=new Array("menu0","menu1","menu2","menu3","menu4","menu5");

var gap:Number=10;
var xmenu:Number=10;

for (var i:Number=0;i<menuArray.length;i++){

    var ClassRef:Class = Class(getDefinitionByName("menu"+i));
    var classInstance:* = new ClassRef();
    classInstance.x = xmenu;
    classInstance.y = 100;
    addChild(classInstance);
    xmenu=xmenu+classInstance.width+gap;
    classInstance.num=i;
   classInstance.addEventListener(MouseEvent.CLICK, traceNum);
}

function traceNum(evt:MouseEvent):void {
   trace(evt.currentTarget.num)
}

Known Participant
January 9, 2014

Thank you,
but there is a problem,
I have one Boton in a library

Known Participant
January 10, 2014

I found this solution it

does not seem to me to be the most professional, but it works


var Path = this;

var Array_menu:Array=new Array("menu0","menu1","menu2","menu3","menu4","menu5");

var Array_Class:Array = [];

for (var i:Number=0;i<Array_menu.length;i++){

    Array_Class.push(Menu_bot);

    }

var gap:Number=10;

var xmenu:Number=10;

for (var j:Number=0;j<Array_Class.length;j++)

         {

              var ClassRef : Object = Array_Class;

              var classInstance : * = new ClassRef();

              classInstance.x = xmenu;

              classInstance.y = 100;

              Path.addChild(classInstance);

              classInstance.num = new Number(j);

              classInstance.addEventListener(MouseEvent.MOUSE_DOWN, tracek);

              xmenu+= classInstance.width + gap;

         }

        

function tracek(e:MouseEvent) : void

{

    trace(e.currentTarget.num);

   

}