有人能澄清拉斐尔的文件吗?(或者知道一个地方已经有人这么做了)
Can someone clarify Raphael's documentation? (or know a place in which someone already has done it)
我正在使用Raphael,我认为我使用它的方式没有利用一些似乎有用的功能。
例如,我试图在Set(一组元素)上添加一个监听器,当鼠标移到这些元素上时,脚本会触发整个Set的动画。
当你向集合中添加一个监听器时,Raphael会将监听器添加到每个元素中,并分别将它们动画化。
就像你在这个例子http://jsfiddle.net/4VYHe/3/中看到的那样,我想让所有的矩形在同一个集合中(set = 10个矩形的水平组),改变鼠标在其中任何一个上的颜色属性。
我在raphael文档中找到了一些方法,我认为必须帮助实现这一点。但是我很难理解这些方法是如何工作的。
例如:- eve对象(http://raphaeljs.com/reference.html#eve)
- Element.animateWith()方法(http://raphaeljs.com/reference.html#Element.animateWith)
- 拉斐尔。动画()方法(http://raphaeljs.com/reference.html#Raphael.animation)
拉斐尔库似乎真的很强大,我真的想让它正常工作,我不想写各种不同的javascript hack,因为我认为这些工具必须以更优雅的方式完成工作。
如果你认为我用错了库,我仍然愿意接受各种建议。提前谢谢你。
——编辑——
这是一个工作示例(http://jsfiddle.net/4VYHe/6/)。但这是一个缺乏效率和优雅的黑客。我想要用正确的方法使用正确的工具。
这一页有一些信息。http://www.irunmywebsite.com/raphael/additionalhelp.php?v=2 PAGETOP。有几个例子,但没有一个能解释拉斐尔的作品是如何运作的。
看看这个小提琴,我想它正在做你正在寻找的东西。最根本的区别是,你想在集合上调用animate,而不是this
。看起来,当您向集合添加处理程序时,this
指向集合中的单个元素(通过迭代来分配处理程序),而不是集合本身。
注意,我将处理程序函数拉到getHoverHandler函数中:
function getHoverHandler(fillColor) {
var cSet = set;
return function(){
cSet.animate({fill: fillColor}, 300);
};
}
set.hover(getHoverHandler('#000'),
getHoverHandler('#FFF'));
以打破闭包。如果你试着这样做:
set.hover(function(){
set.animate({fill: '#000'}, 300)
}, function(){
set.animate({fill: '#FFF'}, 300)
});
在循环时,set将不断变化,闭包将保持对这一点的感知。因此,所有处理程序都将作用于最后一行框。
如果你不懂javascript闭包,你可能想看看这篇文章。它很老了,但是语言很简单,它帮助了我,因为我试着去理解它们。
Kreek在上面的评论是绝对正确的。集合是解决SVG和VML之间不一致的一种方法。
在你上面的例子中,你遇到了你在上一个问题中遇到的同样的问题。在匿名函数中使用this几乎总是不会以您期望的方式工作,因为this不会引用您认为它是什么。看看这个讨论,特别是评论部分的前两条评论。(顺便说一句,评论者用"self"来指代"this",这比我的"that"要好得多,这说明总有人比你做得更好)
无论如何,考虑到这一点,我已经克隆了您的小提琴,将您的集合包装在对象中,并将事件放入对象构造函数中。通过这样做,事件可以引用。set并同时对集合中的所有对象进行动画。这是一个小而基本的概念,它将帮助你在任何拉斐尔(或javascript)开发。
这并不能直接回答你的问题,但希望能澄清一些你似乎发现的问题。我真的不能评论你提到的动画调用,但我确实认为拉斐尔作为一个库绝对值得坚持下去。
n .
- JQuery是否有一个“;移动“;作用或者有没有一种更紧凑的方法来做到这一点
- 使用CloudFront和AmazonS3,或者其他CDN,我可以将所有类似的请求发送到一个静态文件中
- 我需要帮助理解javascript||.这是一个逻辑'或者'是否
- 我如何向这个脚本添加一个点击按钮循环URL函数(按给定顺序在URL之间切换),或者这可能吗
- 我需要将一个参数从另一个任务传递给gullow任务,或者用runSequence调用的函数替换一个任务
- 包括bootstrap.min.css和bootstrap.css,或者只包括一个
- FLOT只绘制一个值,或者没有绘制整个图形
- 闭包中的本地变量从外部更改.这是一个javascript错误,或者我做错了什么
- 是否可以将一个DOM元素转换为另一个?或者从中复制所有属性
- 创建大量的js文件或者合并为一个文件是一种好的做法吗
- 将一些数据从一个控制器传输到另一个控制器,或者如何将控制器更改为服务
- 一个简单的JS-PHP验证(或者我是这么认为的)
- 在 JavaScript ES2015 中,在扩展类时,我们是否需要显式创建一个新的构造函数,或者我们是否可以只使用父类
- 最好有一个包含少量JS的大网页,或者有一个包含一些JS生成内容的小网页
- 在javascript中将base64图像转换为文件,或者如何使用jquery ajax传递一个大的base64字符串
- 一个目标页面用于所有 ajax 调用,或者每个目标页面对应一个目标页面
- 我可以创建一个不使用Javascript的HTML弹出窗口吗?或者我可以把Javascript放到<正文>部分
- addEventListener 在循环中自动触发 - 或者只有最后一个元素有效
- 脚本(效果)显示一个充满徽标的球体(或者它们可能是星星,阅读)
- 找一个或者和猫鼬一起创作