Raphael的Braille例子
Raphael的Braille例子:
注意里面的split(' ')方法,竟然会split出来空元素;
- <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
- <%
- String path = request.getContextPath();
- String basePath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort() + path + "/";
- %>
- <!DOCTYPE html>
- <html>
- <head>
- <base href="<%=basePath%>">
- <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
- <title>Title</title>
- <script type="text/javascript" src="js/jquery-1.11.1.js"></script>
- <script type="text/javascript" src="js/raphael.js"></script>
- <script type="text/javascript" src="js/index009.js"></script>
- </head>
- <body>
- <input id='message' style='width:200px' value='Raphael is great' />
- <input id='clickme' type='button' value='braille-ify' />
- <div id="container"></div>
- </body>
- </html>
- $(function() {
- initRaphael();
- });
- function initRaphael(e) {
- /**
- * braille盲文
- * 1 4
- * 2 5
- * 3 6
- */
- var braille = {
- 'A' : '1',
- 'B' : '1-2',
- 'C' : '1-4',
- 'D' : '1-4-5',
- 'E' : '1-5',
- 'F' : '1-2-4',
- 'G' : '1-2-4-5',
- 'H' : '1-2-5',
- 'I' : '2-4',
- 'J' : '2-4-5',
- 'K' : '1-3',
- 'L' : '1-2-3',
- 'M' : '1-3-4',
- 'N' : '1-3-4-5',
- 'O' : '1-3-5',
- 'P' : '1-2-3-4',
- 'Q' : '1-2-3-4-5',
- 'R' : '1-2-3-5',
- 'S' : '2-3-4',
- 'T' : '2-3-4-5',
- 'U' : '1-3-6',
- 'V' : '1-2-3-6',
- 'W' : '2-4-5-6',
- 'X' : '1-3-4-6',
- 'Y' : '1-3-4-5-6',
- 'Z' : '1-3-5-6'
- };
- var paper = Raphael('container', 500, 500);
- var SPACING = 14, RADIUS = 2;
- // 根据数字进行布莱叶文字转换
- function make_dot(number) {
- number -= 1;
- if (number < 0 || number > 5) {
- console.log('Invalid number.');
- return null;
- }
- var x = Math.floor(number / 3);
- var y = number % 3;
- var dot = paper.circle(x * SPACING, y * SPACING, RADIUS).attr('fill', 'black');
- return dot;
- }
- // 根据数字字符串进行布莱叶转换
- function make_cell(dots) {
- if (typeof dots === 'string') {
- dots = dots.split('-');
- }
- var cell = paper.set();
- for (var c = 0; c < dots.length; c++) {
- cell.push(make_dot(dots[c]));
- }
- return cell;
- }
- // paper.text(10, 25, "V:");
- // make_cell('1-2-3-6').transform('T30,10');
- // 根据一个单词进行布莱叶转换
- function make_word(word, pos) {
- pos = pos || {
- x : 10,
- y : 10
- };
- word = word.toUpperCase();
- var myword = paper.set();
- for (var c = 0; c < word.length; c++) {
- // 如果在布莱叶对象中,就进行转换
- if (braille[word[c]]) {
- var letter = make_cell(braille[word[c]]);
- myword.push(letter);
- letter.transform('T' + pos.x + ',' + pos.y);
- // 绘制一个就进行x坐标的增加
- pos.x += SPACING * 3;
- }
- }
- return myword;
- }
- // make_word('Raphael', {x:10,y:50});
- function make_words(message) {
- var pos = {
- x : 10,
- y : 10
- };
- // a b(中间有两个空格)会split出来的长度是4;空字符串split出来的内容的确会增加新的元素;
- // 'a b'.split(' ') -> ["a", "", "", "b"]
- // 'abcbd'.split('b') -> ["a", "c", "d"]
- var words = message.toUpperCase().split(' ');
- var myset = paper.set();
- for (var c = 0; c < words.length; c++) {
- myset.push(make_word(words[c], pos));
- // 如果计算之后的x坐标大于paper.width,就换行;
- if (pos.x > 10 && (pos.x + SPACING * 3 * words[c].length) > paper.width) {
- pos.x = 10;
- pos.y += SPACING * 5;
- } else {
- // 如果是空字符串也会增加一下x坐标;
- pos.x += SPACING * 3;
- }
- }
- return myset;
- }
- var braille_words = paper.set();
- function make() {
- // 进行已有集合的清空
- braille_words.remove();
- braille_words = make_words($('#message').val());
- }
- $('#clickme').click(make);
- make();
- }
Raphael的Braille例子的更多相关文章
- Raphael Js矢量库API简介:
Raphael Js矢量库API简介:Raphael Javascript 是一个 Javascript的矢量库. 2010年6月15日,著名的JavaScript库ExtJS与触摸屏代码库项目jQT ...
- 对Raphael画图标的一个jquery简单封装
公司要做一个项目的demo,要求地图上可以插红旗,所以就用到了Raphael. 因为是个demo,所以地图就用了一张图片,效果如下: 所以为了更好的封装一下这个功能,就写了一个简单的插件:jquery ...
- 学习RaphaelJS矢量图形包--Learning Raphael JS Vector Graphics中文翻译(一)
(原文地址:http://www.cnblogs.com/idealer3d/p/LearningRaphaelJSVectorGraphics.html) 前面3篇博文里面,我们讲解了一本叫做< ...
- svg―Raphael.js Library(一)
Raphael是一个用于在网页中绘制矢量图形的Javascript库,它使用SVG W3C推荐标准和VML作为创建图形的基础,可以通过JavaScript操作DOM来轻松创建出各种复杂的柱状图.饼图. ...
- svg―Raphael.js Library
Raphael是一个用于在网页中绘制矢量图形的Javascript库,它使用SVG W3C推荐标准和VML作为创建图形的基础,可以通过JavaScript操作DOM来轻松创建出各种复杂的柱状图.饼图. ...
- 使用Raphael 画图(二) 扩展的图形 (javascript)
看这文章前,建议先看第一编文章<使用Raphael 画图(一) 基本图形 (javascript)>. 在Raphael基础上扩展的图形: 要运行该例子要引入附件的2个js包.(g.rap ...
- Raphael入门实例:绘图
raphael 实例 开始 创建画布参数说明 创建一个画布对象. 下面每个例子都会创建一个320*200大小的画布. ? 1 2 // 1.在视口的 (10,50) 坐标位置上创建画布 var pap ...
- Raphael.js--基础1
Raphael.js 特点: 1.兼容VML和SVG 2.扩展功能——动画 用法: //1.创建画布 let paper=Raphael(x,y,width,height); //2.创建形状 let ...
- Raphael path 拖动实现
让 Raphael 的 Path 动起来 Raphaël 是一个很实用的线上矢量图操作 Javascript 库.使用简单,一个值得一提的卖点是通过抽象出共同的接口屏蔽了 SVG 和 VML 之间的差 ...
随机推荐
- VS2015安装提示出现“安装包丢失或损坏”解决方法
原因:microsoft root certificate authority 2010.microsoft root certificate authority 2011证书未安装,导致文件校验未通 ...
- USACO 1.3.3 Prime Cryptarithm
题目链接:1.3.3 我用的枚举法,即每产生一组数据就判断是否是所给数字里的. AC还沾沾自喜,但一看题解,发现自己的代码真low... 在平时练习时,应该追求高效,精炼的代码,这样比赛时才能省出大量 ...
- android4.0 的图库Gallery2代码分析(二)
最近迫于生存压力,不得不给人兼职打工.故在博文中加了个求点击的链接.麻烦有时间的博友们帮我点击一下.没时间的不用勉强啊.不过请放心,我是做技术的,肯定链接没病毒,就是我打工的淘宝店铺.嘻嘻.http: ...
- 再探CRC(转)
源:http://hi.baidu.com/skystalker/item/228a263147f74e87f5e4ad8d 之前写了CRC16的程序,虽说能用,却不知其所心然,现在要用CRC32,重 ...
- flex中form表单中子元素之间的距离控制
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:mx="library://ns.ado ...
- CodeForces 618B Guess the Permutation
只要找出当前没用过的数字中,大于或等于当前这一列的最大值就可以 #include<cstdio> #include<cstring> #include<cmath> ...
- Application_Start和Application_End事件执行时间
Application_start: 第一个访问网站的用户会触发该方法. 通常会在该方法里定义一些系统变量,如聊天室的在线总人数统计,历史访问人数统计的初始化等等均可在这里定义. Applicatio ...
- Js apply call方法详解
Js apply方法详解 我在一开始看到javascript的函数apply和call时,非常的模糊,看也看不懂,最近在网上看到一些文章对apply方法和call的一些示例,总算是看的有点眉目了,在这 ...
- MySQL 索引的使用
一.or 的使用 (1)MySQL版本大于 5.x 的会使用 index merge 功能,即可以将多个单列索引集合起来使用,不过在查询时使用 or 的话,引擎为 myisam 的会开启 index ...
- NSDate详解及获取当前时间等常用操作
NSDate类用于保存时间值,同时提供了一些方法来处理一些基于秒级别时差(Time Interval)运算和日期之间的早晚比较等. 1. 创建或初始化可用以下方法 用于创建NSDate实例的类方法有 ...