Показать сообщение отдельно
  #17 (permalink)  
Старый 05.11.2012, 00:06
Аватар для cyber
I am Student
Отправить личное сообщение для cyber Посмотреть профиль Найти все сообщения от cyber
 
Регистрация: 17.12.2011
Сообщений: 4,415

Дзен-трансгуманист,
я про кэш скрипта
var imgCache = loaded[type.bg];

              if (!imgCache) {

                      var img = new Image();
                      img.src = type.bg;
                      
                      
                      img.onload = function () {
                          drawImg.call(this, x, y, width, height);
                      };
                     
                       loaded[type.bg] = {
                          obj: img,
                          loaded: false
                      };

                      img = null;
                  }

                  else {
                    
                  if (imgCache.loaded)
                      ctx.drawImage(imgCache.obj, x, y, width, height);


                  else {

                      if (!imgCache.sub) imgCache.sub = [];

                      imgCache.sub.push(function () {
                          ctx.drawImage(imgCache.obj, x, y, width, height);
                      });
                  }
                      

                  
              }

              function drawImg(x,y,width, height) {

                  loaded[type.bg].loaded = true;
                  console.log(this);
                  ctx.drawImage(this, x, y, width, height);

                  var sub = loaded[type.bg].sub;

                  for (var i = 0; i < sub.length; i++) sub[i]();
              };

работает так:
-если картинки нет в кэше то создать и добавить ее туда свойство ,loaded = false;

- если картинка не загружена , но есть в кэше то в свойство sub (подписка) добавляется функция которая вызовется после загрузки

- если картинка есть в кэше и загружена просто от рисовать
__________________
Цитата:
Если ограничения и условия описываются как "коробка", то хитрость в том что бы найти именно коробку... Не думайте о чем то глобальном - найдите коробку.
Ответить с цитированием