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
Post a Comment