Стандартный способ включать библиотеку JavaScript из JavaScript

Я читал где-нибудь, человеческий глаз не может различать меньше чем 4 значения независимо. таким образом, Это - что-то для учета. Следующий алгоритм не компенсирует это.

я не уверен, что это точно, что Вы хотите, но это - один способ случайным образом генерировать неповторяющиеся значения цвета:

(остерегаются, непоследовательный псевдокод вперед)

//colors entered as 0-255 [R, G, B]
colors = []; //holds final colors to be used
rand = new Random();

//assumes n is less than 16,777,216
randomGen(int n){
   while (len(colors) < n){
      //generate a random number between 0,255 for each color
      newRed = rand.next(256);
      newGreen = rand.next(256);
      newBlue = rand.next(256);
      temp = [newRed, newGreen, newBlue];
      //only adds new colors to the array
      if temp not in colors {
         colors.append(temp);
      }
   }
}

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

for item in color{
   itemSq = (item[0]^2 + item[1]^2 + item[2]^2])^(.5);
   tempSq = (temp[0]^2 + temp[1]^2 + temp[2]^2])^(.5);
   dist = itemSq - tempSq;
   dist = abs(dist);
}
//NUMBER can be your chosen distance apart.
if dist < NUMBER and temp not in colors {
   colors.append(temp);
}

, Но этот подход значительно замедлил бы Ваш алгоритм.

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

5
задан Mosè Raguzzini 19 November 2019 в 16:09
поделиться

4 ответа

Из сообщений в наших внутренних списках рассылки на работе я заметил следующее:

Существует множество пограничных кроссбраузерных случаев, в которых задействовано динамически инъекционные скрипты. Если вставка исходного файла YUI 3 в ваш скрипт не вариант, и если вы не можете полагаться на свойство уже иметь YUI 3 seed загружен, я бы рекомендовал использовать LazyLoad (бесстыдный плагин) для загрузите ваш скрипт: http://github.com/rgrove/lazyload/

Вы можете объединить lazyload.js в свой скрипт, а затем использовать что-то вроде этого для загрузки начального числа YUI 3, если его еще нет на странице:

(function () {
   function init() {
     YUI().use('node', function (Y) {
       // ... do my stuff ...
     });
   }

   if (YUI) {
     init();
   } else {
     LazyLoad.js('http://yui.yahooapis.com/3.0.0/build/yui/yui-min.js',
init);
   }
})();
2
ответ дан 14 December 2019 в 13:40
поделиться

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

Проблема в том, что jQuery как 1.3.2 не может определить, загружен ли документ, если он сам включен после загрузки документа (например, динамическое