将矩阵输出文本更改为西里尔语unicode脚本

时间:2014-03-07 11:59:53

标签: javascript jquery html matrix

我目前正在项目中使用这个Matrix脚本,我想要做的是转换字符输出,以便打印出西里尔字符而不是中文字符:

      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);

然而,这是我卡住的地方,它似乎是从随机数学运算中打印出来的。我不明白改变它的过程,并告诉它打印出西里尔文脚本的unicode范围。

任何帮助都会很棒,希望我已经足够清楚了。

编辑:

我一直在玩它并取得了一些进展。西里尔字母的unicode范围从'0410'到'042F' - 所以我编辑了

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

并重写为          text = String.fromCharCode(0410,0411,0412,0413,0414);

此代码有效,但它会同时打印所有5个字符,并在此过程中破坏矩阵代码。我需要做的就是让它从定义的范围内打印单个字符,尽管我觉得这个字符目前高于我的理解水平。

1 个答案:

答案 0 :(得分: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)打印了所有五个字符,但这正是它被要求做的事情。如果我们传递浮点值并将它们四舍五入,它似乎也不在乎。

例如,如果您希望它返回所有大写字母,您需要传递它的数字(或十六进制值)并让它随机获得一个。对于大写字母A-Z(65 - 90),它需要26个字母中的一个,给我们,

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

返回介于65和90之间的数字。乘法具有优先权,因此在添加之前发生。

Cyrillic Basic是1024到1279和256个字符:

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