我用RaphelJS创建了一个Hexagon,但是我已经在Google上搜索了几个小时,并且找不到一个关于如何翻转Hexagon的简单易学的教程。
这是当前的六边形创建代码:
function polygon(x, y, size, sides, rotate) {
var self = this;
self.centrePoint = [x,y];
self.size = size;
self.sides = sides;
self.rotated = rotate;
self.sizeMultiplier = 50;
self.points = [];
for (i = 0; i < sides; i++) {
self.points.push([(x + (self.size * self.sizeMultiplier) * (rotate ? Math.sin(2 * 3.14159265 * i / sides) : Math.cos(2 * 3.14159265 * i / sides))), (y + (self.size * self.sizeMultiplier) * (rotate ? Math.cos(2 * 3.14159265 * i / sides) : Math.sin(2 * 3.14159265 * i / sides)))]);
}
self.svgString = 'M' + self.points.join(' ') + ' L Z';
}
$(document).ready(function() {
var paper = Raphael(0, 0, 450, 450);
var path1 = new polygon(100, 100, 2, 6, false);
var path2 = new polygon(205, 187, 1, 6, false);
var path3 = new polygon(100, 277, 2, 6, false);
var hex1 = paper.path(path1.svgString);
var hex2 = paper.path(path2.svgString);
var hex3 = paper.path(path3.svgString);
hex1.node.id = "hex1";
hex1.attr("fill", "#ccc");
hex1.attr("stroke", "#aceace");
});
我非常感谢任何帮助。
谢谢。
答案 0 :(得分:4)
你想如何翻转六边形?如果您只想水平或垂直翻转,可以使用scale功能。文档列出如下:
Element.scale(sx, sy, [cx], [cy])
您可以插入否定sx
(水平翻转)或sy
(垂直翻转)。由于您希望六边形保持相同的大小,因此请使用值-1
:
hex1.scale(1,-1, 0, 0);
更新:显然已弃用scale
函数,因此您应该使用transform
函数,并记住在缩放后调整换算(或缩放)六角形的中心)。所以代码看起来像这样(500ms的缓动效果):
hex1.animate({transform: "S-1,1"},500,'easeOut');
或者
hex1.transform("S-1,1")
没有动画效果。