Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Canvas Вывод изображений в цикле (https://javascript.ru/forum/dom-window/56989-canvas-vyvod-izobrazhenijj-v-cikle.html)

laimas 14.07.2015 08:45

Цитата:

Сообщение от kostyanet
Когда нечего сказать - молчат.

Ты если хочешь показаться умным, то хоть внимательно читай то, что бездумно копируешь.
Ничто не будет "испорчено", это не баба, которую портят в кустах, это аргумент, и в данном случае передача по ссылке, то есть изменяться будет то, на что указывает ссылка, а не аргумент. Умник хренов, несешь бред от поста к посту, изгадил весь форум своим словоблудием, даже заглядывать в посты из за тебя паразита не охота.

jackdempsey2015 14.07.2015 11:14

<html>

<canvas id="c"></canvas>


<script>

data=[
{path: "http://javascript.ru/forum/images/smilies/smile.gif", x: 10, y: 10},
{path: "http://javascript.ru/forum/images/smilies/wink.gif", x: 20, y: 20}
]
createImage=function(o){
 o.img=new Image
 o.img.src=o.path
 o.img.onload=function(){c.getContext("2d").drawImage(o.img, o.x, o.y)}
}
data.forEach(createImage)


</script>
</html>


ЗЫ то что выше советовали про замыкания -- не слушайте. Это, мягко говоря, неоптимальный вариант.

MallSerg 14.07.2015 11:49

foo эволюционирует =).
Любопытно как долго продержется этот акк

рони 14.07.2015 12:20

Цитата:

Сообщение от jackdempsey2015
ЗЫ то что выше советовали про замыкания -- не слушайте

Цитата:

Сообщение от jackdempsey2015
forEach

сахар этого же замыкания.

kostyanet 14.07.2015 12:30

Цитата:

Сообщение от laimas
Ничто не будет "испорчено", это не баба,

Сколько угодно глюков из-за рефов и я бы сказал что указатели народ не любит именно из-за того, что данные портятся.

Цитата:

Сообщение от jackdempsey2015
data.forEach(createImage)

Вы устройство этого форича гляньте. Но, еще раз, дело тут вовсе не в том что цикл, а в том, что порядок будет нарушен. Если он не важен, то не важен, а когда станет важен придется выкидывать цикл в какой бы ипостаси он не был и пихать хобот в ж. Иначе асинхрон не упорядочить.

jackdempsey2015 14.07.2015 12:44

>>Вы устройство этого форича
Если не устраивает скорость нативного, напишите свой
>>а в том, что порядок будет нарушен
никакого порядка там нет, событие наступает в порядке загрузки картинок, асинхронно, поэтому контролировать этот порядок невозможно, Можно синхронизировать загрузку, но это уже другая история.

jackdempsey2015 14.07.2015 12:57

Цитата:

Сообщение от рони
сахар этого же замыкания.

forEach не создает никаких замыканий, он просто вызывает последовательно указанную функцию для каждого элемента. В некотором роде, замыкание там создается в самом обработчике onload. И то, фактически, это не замыкание, просто пробрасывание переменной, окружение там не создается, эта связка живет только в момент вызова, поэтому никакого оверхеда по памяти там нет. Но я говорил про явное создание анонимных замыканий.

laimas 14.07.2015 13:09

Цитата:

Сообщение от kostyanet
Сколько угодно глюков из-за рефов

Ты понятия не имеешь, что такое передача по ссылке и какова польза от них, как и многое другое не понимаешь, поэтому видимо и используешь этот тупой жаргон в стиле четких пацанчиков, а бы умным и крутым казаться.

Самое смешное, так это то, что к данной теме пост о передаче по ссылке как собаке пятая лапа.

kostyanet 14.07.2015 22:48

Цитата:

Сообщение от jackdempsey2015
поэтому контролировать этот порядок невозможно

На предыдущей странице есть рабочий пример с полным контролем этого самого порядка.

jackdempsey2015 15.07.2015 00:54

Цитата:

Сообщение от kostyanet
с полным контролем этого самого порядка.

нет у тебя там никакого контроля порядка, онлоад вызывается асинхронно, ты не можешь знать когда он отработает. В твоем коде он только назначен, то же самое что и в моем, никакой разницы, в этом отношении.


Часовой пояс GMT +3, время: 05:56.