javascript - Canvas stroke text for every object in array but draw just one image -


i trying draw small image on canvas , text every person have in array. doing

function drawpersonsoncanvas(canvas, persons) {     var workicon = '../images/work.png';     var partyicon = '../images/party.png';      var context = canvas.getcontext('2d');     var width = canvas.width;     var height = canvas.height; // randomizepositions put every object of array on random position inside canvas     persons = randomizepositions(persons, width, height);     (var in persons) {         var person= persons[i];          person['image'] = new image();         person['image'].src = (person['type'] === 'work') ? workicon: partyicon;         person['image'].onload = function() {             context.drawimage(person['image'], person['x'], person['y']);         };         context.stroketext('person ' + person['status'], person['x'], person['y']);     } } 

and texts on map on positions , 1 image , x , y different ( have 5 persons in array, tried , without onload doesn't work). know change 1 picture every person?

by time each onload executed, person variable has been reassigned next element in persons.

so need create new person variable inside onload.

to this, add index person[‘image’] points correct person.

    …     person['image'].index=i;     person['image'].src = (person['type'] === 'work') ? workicon: partyicon;     … 

then inside onload can recreate correct person:

        var person=persons[this.index]; 

so reworked code looks this...and fiddle: http://jsfiddle.net/m1erickson/xms9b/

function drawpersonsoncanvas(canvas, persons) {      var workicon = '../images/work.png';     var partyicon = //'../images/party.png';      var context = canvas.getcontext('2d');     var width = canvas.width;     var height = canvas.height; // randomizepositions put every object of array on random position inside canvas     persons = randomizepositions(persons, width, height);     (var in persons) {         var person= persons[i];         person['image'] = new image();         person['image'].onload = function() {             var person=persons[this.index];             context.drawimage(person['image'], person['x'], person['y']);             context.stroketext('person ' + person['status'], person['x'], person['y']);         };         person['image'].index=i;         person['image'].src = (person['type'] === 'work') ? workicon: partyicon;     } } 

Comments

Popular posts from this blog

php - Why I am getting the Error "Commands out of sync; you can't run this command now" -

linux - Does gcc have any options to add version info in ELF binary file? -

java - Are there any classes that implement javax.persistence.Parameter<T>? -