actionscript 3 - Having dynamic name's in array AS3 -
i'm having issues as3. i'm trying items put in array have dynamic name (ex. lines[k]) when want call on them later can call them number instead of calling them @ time
i've found tutorials dynamic array names on website i'm unsure how fit them in code because keep getting error's.
at moment code:
var numpoints:number = 0; // number of points placed. // no dragging work until 7 points placed. // set max & min stage coordinates points can dragged, , make point diameters settable. var xmax:number = 700; var xmin:number = 5; var ymax:number = 500; var ymin:number = 5; var o = 0; var circlewidth:number = 5; // boolean variables indicate dragging happening appropriate point follows mouse // on mouse_move event. var isdragging1:boolean = false; var isdragging2:boolean = false; var isdragging3:boolean = false; var isdragging4:boolean = false; var isdragging5:boolean = false; var isdragging6:boolean = false; var isdragging7:boolean = false; // drawboard rectangle on triangle drawn. colors settable here. change size, // change variables xmin, xmax, ymin, ymax above. var drawboard:sprite = new sprite(); drawboard.graphics.linestyle(1, 0x000000); drawboard.graphics.beginfill(0xcccccc); drawboard.graphics.drawrect(0, 0, xmax - xmin, ymax - ymin); drawboard.graphics.endfill(); drawboard.x = xmin; drawboard.y = ymin; // array (where "lines goes into") var q:int = 0; var shapearray:array/* of flash.display.shape */ = [] /* of flash.display.shape */; var lines:shape = new shape(); // add default drop shadow filter drawboard drawboard.filters = [ new dropshadowfilter() ]; // rectangle listen mouse clicks in order construct 3 vertices of triangle. drawboard.addeventlistener(mouseevent.click, placepoint); // put on stage board on triangle drawn. stage.addchild(drawboard); // filled triangle consists of 3 lines drawn between points. updated on mouse_move once // dragging starts. drawboard.addchild(lines); // stage listen events involving dragging dragging continue work after // mouse has rolled off of drawboard region. stage.addeventlistener(mouseevent.mouse_move, mouseupdate); stage.addeventlistener(mouseevent.mouse_up, stopdragging); // button 2 (left) bttn_add.addeventlistener(mouseevent.click, toevoegen); // button 3 (middle) bttn_show.addeventlistener(mouseevent.click, showit); // adding shape array function toevoegen(e:event):void { // adding shapearray.push( lines ); numpoints = 0; trace("done pushing") } // shape show function showit(e:event):void { trace(shapearray.length); if (!shapearray || shapearray.length == 0){ // shapearray.push( lines ); trace("array leeg") return; // nothing here } const lines:shape = shapearray[o] shape; if (lines && ! lines.parent) { o++; trace ("tracer"+ o); }// show drawboard.addchild(lines) //shapearray.push( lines ); numpoints = 0; trace() } // add 7 points stage not add graphics yet. specify listeners // @ time when placed, able drag them. var point1:sprite = new sprite(); point1.addeventlistener(mouseevent.mouse_down, startdragging1); drawboard.addchild(point1); var point2:sprite = new sprite(); point2.addeventlistener(mouseevent.mouse_down, startdragging2); drawboard.addchild(point2); var point3:sprite = new sprite(); point3.addeventlistener(mouseevent.mouse_down, startdragging3); drawboard.addchild(point3); var point4:sprite = new sprite(); point4.addeventlistener(mouseevent.mouse_down, startdragging4); drawboard.addchild(point4); var point5:sprite = new sprite(); point5.addeventlistener(mouseevent.mouse_down, startdragging5); drawboard.addchild(point5); var point6:sprite = new sprite(); point6.addeventlistener(mouseevent.mouse_down, startdragging6); drawboard.addchild(point6); var point7:sprite = new sprite(); point7.addeventlistener(mouseevent.mouse_down, startdragging7); drawboard.addchild(point7); // reset button stop dragging, remove children of drawboard, , set numpoints 0. btnreset.addeventlistener(mouseevent.click, reset); function reset(evt:mouseevent):void { var i:number; var n:number = drawboard.numchildren; isdragging1 = false; isdragging2 = false; isdragging3 = false; isdragging4 = false; isdragging5 = false; isdragging6 = false; isdragging7 = false; point1.graphics.clear(); point2.graphics.clear(); point3.graphics.clear(); point4.graphics.clear(); point5.graphics.clear(); point6.graphics.clear(); point7.graphics.clear(); /* drawboard.removechild(point1); drawboard.removechild(point2); drawboard.removechild(point3); drawboard.removechild(point4); drawboard.removechild(point5); drawboard.removechild(point6); drawboard.removechild(point7); */ //lines.graphics.clear(); drawboard.removechild(lines); numpoints = 0; trace(numpoints); } // next function executed when mouse moved. note if points not placed , nothing // being dragged, function nothing. function mouseupdate(evt:mouseevent):void { if (numpoints == 7) { if (isdragging1) { point1.x = goodx(evt.stagex); // set x- & y-coordinates. see below definition of point1.y = goody(evt.stagey); // functions goodx & goody //lines.graphics.clear(); // remove lines shape , redraw drawlines(); // updated coordinates. } if (isdragging2) { point2.x = goodx(evt.stagex); point2.y = goody(evt.stagey); //lines.graphics.clear(); drawlines(); } if (isdragging3) { point3.x = goodx(evt.stagex); point3.y = goody(evt.stagey); //lines.graphics.clear(); drawlines(); } if (isdragging4) { point4.x = goodx(evt.stagex); point4.y = goody(evt.stagey); //lines.graphics.clear(); drawlines(); } if (isdragging5) { point5.x = goodx(evt.stagex); point5.y = goody(evt.stagey); //lines.graphics.clear(); drawlines(); } if (isdragging6) { point6.x = goodx(evt.stagex); point6.y = goody(evt.stagey); //lines.graphics.clear(); drawlines(); } if (isdragging7) { point7.x = goodx(evt.stagex); point7.y = goody(evt.stagey); //lines.graphics.clear(); drawlines(); } evt.updateafterevent(); } } /* function chooses appropriate x-coordinate dragged point. if thisx in draggable region, return it. otherwise, return max or min x value, depending on side of draggable region thisx on. */ function goodx(thisx:number):number { if (thisx < xmin) { return (xmin); } if (thisx > (xmax - circlewidth)) { return (xmax - circlewidth); } return (thisx); } // function chooses appropriate y-coordinate dragged point in manner similar previous function. function goody(thisy:number):number { if (thisy < ymin) { return (ymin); } if (thisy > (ymax - circlewidth)) { return (ymax - circlewidth); } return thisy; } // function manages placement of points until 7 points placed. function placepoint(evt:mouseevent):void { //var point = new sprite(); //array.push(point); if (numpoints == 0) { point1.graphics.beginfill(0x7777ff); point1.graphics.drawcircle(0, 0, circlewidth/2); point1.graphics.endfill(); point1.filters = [ new dropshadowfilter() ]; point1.x = drawboard.mousex; point1.y = drawboard.mousey; numpoints = 1; } else if(numpoints == 1) { point2.graphics.beginfill(0x7777ff); point2.graphics.drawcircle(0, 0, circlewidth/2); point2.graphics.endfill(); point2.filters = [ new dropshadowfilter() ]; point2.x = drawboard.mousex; point2.y = drawboard.mousey; numpoints = 2; } else if (numpoints == 2) { point3.graphics.beginfill(0x7777ff); point3.graphics.drawcircle(0, 0, circlewidth/2); point3.graphics.endfill(); point3.filters = [ new dropshadowfilter() ]; point3.x = drawboard.mousex; point3.y = drawboard.mousey; numpoints = 3; //lines.graphics.clear(); //drawboard.removechild(lines); } else if (numpoints == 3) { point4.graphics.beginfill(0x7777ff); point4.graphics.drawcircle(0, 0, circlewidth/2); point4.graphics.endfill(); point4.filters = [ new dropshadowfilter() ]; point4.x = drawboard.mousex; point4.y = drawboard.mousey; numpoints = 4; //lines.graphics.clear(); //drawboard.removechild(lines); } else if (numpoints == 4) { point5.graphics.beginfill(0x7777ff); point5.graphics.drawcircle(0, 0, circlewidth/2); point5.graphics.endfill(); point5.filters = [ new dropshadowfilter() ]; point5.x = drawboard.mousex; point5.y = drawboard.mousey; numpoints = 5; //lines.graphics.clear(); //drawboard.removechild(lines); } else if (numpoints == 5) { point6.graphics.beginfill(0x7777ff); point6.graphics.drawcircle(0, 0, circlewidth/2); point6.graphics.endfill(); point6.filters = [ new dropshadowfilter() ]; point6.x = drawboard.mousex; point6.y = drawboard.mousey; numpoints = 6; //lines.graphics.clear(); //drawboard.removechild(lines); } else if (numpoints == 6) { point7.graphics.beginfill(0x7777ff); point7.graphics.drawcircle(0, 0, circlewidth/2); point7.graphics.endfill(); point7.filters = [ new dropshadowfilter() ]; point7.x = drawboard.mousex; point7.y = drawboard.mousey; numpoints = 7; q++; //shapearray.push( lines ); //lines.graphics.clear(); //drawboard.removechild(lines); drawlines(); //verplaatsen(); trace(numpoints); } } // draws 7 lines between points appropriate fill , adds drop shadow. function drawlines():void { lines.graphics.linestyle(1, 0xff0000); lines.graphics.beginfill(0xff7777); lines.graphics.moveto(point1.x, point1.y); lines.graphics.lineto(point2.x, point2.y); lines.graphics.lineto(point3.x, point3.y); lines.graphics.lineto(point4.x, point4.y); lines.graphics.lineto(point5.x, point5.y); lines.graphics.lineto(point6.x, point6.y); lines.graphics.lineto(point7.x, point7.y); lines.graphics.lineto(point1.x, point1.y); lines.graphics.endfill(); lines.filters = [ new dropshadowfilter() ]; trace(lines) trace ("geval"+ o) } // next functions "turn on" dragging point clicked, long 7 points have // been placed. function startdragging1(evt:mouseevent):void { if (numpoints == 7) { isdragging1 = true; } } function startdragging2(evt:mouseevent):void { if (numpoints == 7) { isdragging2 = true; } } function startdragging3(evt:mouseevent):void { if (numpoints == 7) { isdragging3 = true; } } function startdragging4(evt:mouseevent):void { if (numpoints == 7) { isdragging4 = true; } } function startdragging5(evt:mouseevent):void { if (numpoints == 7) { isdragging5 = true; } } function startdragging6(evt:mouseevent):void { if (numpoints == 7) { isdragging6 = true; } } function startdragging7(evt:mouseevent):void { if (numpoints == 7) { isdragging7 = true; } } // turns off dragging. function called when mouse button released anywhere on stage. function stopdragging(evt:mouseevent):void { if (numpoints == 7) { isdragging1 = false; isdragging2 = false; isdragging3 = false; isdragging4 = false; isdragging5 = false; isdragging6 = false; isdragging7 = false; } } /* function verplaatsen():void{ lines.x = 0; lines.x = 100; lines.y = 300; }*/
i apologize if code messy / sloppy i've been trying day , bit sleep deprived now.
any apreciated
(as side not: fast way put 4 spaces infront create code blocks on website?)
you should how array works, code can see using different variables hold sprites , checking different variables inside functions isdraging1,2,3,4,5.
here code started.
public var mysprites:array = []; public function init():void { (var i:int = 0; i<10; ++i) { createsprite(); } } public function createsprite():void { var sprite:sprite = new sprite(); sprite.addeventlistener(mouseevent.mouse_click,onspriteclicked); addchild(sprite); mysprites.push(sprite); } public function onspriteclicked(e:mouseevent):void { trace("you clicked sprite : "+mysprites.indexof(e.target sprite)); // can use sprite here var clickedsprite:sprite = e.target sprite; if(clickedsprite) { //do sprite } }
Comments
Post a Comment