2014-03-07 4 views
1

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

 var s = window.screen; 
      var width = q.width = s.width; 
      var height = q.height = s.height/6; 
      var letters = Array(256).join(1).split(''); 

      var draw = function() { 
      q.getContext('2d').fillStyle='rgba(0,0,0,.05)'; 
      q.getContext('2d').fillRect(0,0,width,height); 
      q.getContext('2d').fillStyle="FF0000"; 
      letters.map(function(y_pos, index){ 
       text = String.fromCharCode(3e4+Math.random()*33); 
       x_pos = index * 10; 
       q.getContext('2d').fillText(text, x_pos, y_pos); 
       letters[index] = (y_pos > 768 + Math.random() * 1e4) ? 0 : y_pos + 10; 
      }); 
      }; 
      setInterval(draw, 33); 

из того, что я могу собрать эти две строки кода отвечает за вывод символов к экрану:

  var letters = Array(256).join(1).split(''); 


       text = String.fromCharCode(3e4+Math.random()*33); 

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

Любая помощь будет большой, надеюсь, что я был достаточно ясен.

EDIT:

Я просто играл с ним о том и сделал какой-то прогресс. Диапазон Юникода кириллицы длится с '0410' до '042F' - так я редактировал

text = String.fromCharCode(3e4+Math.random()*33); 

и переписал его как текст = String.fromCharCode (0410, 0411, 0412, 0413, 0414);

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

ответ

0

Оригинал возвращает случайное число между 30000 и 30033. Вы можете заменить математику, чтобы вернуть нужный вам символ.

«3e4 + Math.random() * 33» использует экспоненту (3e4 преобразует в 30000) в качестве базы, а затем получает случайное число от 0 до 33 и складывает их вместе, чтобы вернуть номер символьного кода между 30000 и 30033.

String.fromCharCode (3E4 + Math.random() * 33) можно записать в виде

String.fromCharCode (30000 + (Math.random() * 33))

для ясность, но не обязательно иметь скобки вокруг умножения.

Я впечатлен тем, что String.fromCharCode (0410, 0411, 0412, 0413, 0414) печатает все пять символов, но это именно то, что его просят сделать. Это также не заботит, если мы передадим его значениям с плавающей запятой и просто округлите их.

Пример, если вы хотите, чтобы он возвращал все заглавные буквы, вы должны передать его номерам (или шестнадцатеричным значениям) и получить их в случайном порядке. Для прописных букв AZ (65 - 90), он хочет один из 26 букв, что дает нам,

String.fromCharCode (65 + Math.random() * 26)

Возвращает число в диапазоне от 65 до 90 лет. Умножение имеет приоритет, поэтому происходит до добавления.

кириллица Basic 1024 до 1279 и 256 символов:

String.fromCharCode (1024 + Math.random() * 256)

Смежные вопросы