用raphael拖放

时间:2011-01-05 08:35:13

标签: javascript raphael

你好我是新手使用raphael javascript库我试图创建一个简单的拖放;能够将一个克隆形状从画布外部拖到画布R中,我希望能够删除所选克隆,如果用户点击它(用户按删除选定的克隆和克隆被删除)我也想复制克隆并粘贴它。这是我的代码:

<html>  
<head>  
    <title>Raphael Play</title>  
   <script type="text/javascript" src="raphael.js"></script> 
   <script type="text/javascript" src="jquery.contextMenu.r2.js"></script>
   <style type="text/css"> 
   #canvas_container {   
           width: 500px;   
           border: 1px solid #aaa;   
        }   
    </style>
   <script>
window.onload = function() {
var nowX, nowY, w = 500, h=400, r=30, R = Raphael("canvas_container", w, h),
    c = R.circle(100, 100, r).attr({
    fill: "hsb(.8, 1, 1)",
    stroke: "none",
    opacity: .5,
    cursor: "move"
});

var clone=c.clone();

var start = function () {
    // storing original coordinates
    this.ox = this.attr("cx");
    this.oy = this.attr("cy");
    this.attr({opacity: 1});
},
move = function (dx, dy) {
    // move will be called with dx and dy
    // restrict movement of circle to within boundaries
   if (this.ox + dx <= w - r && 
       this.oy + dy <= h - r &&
       this.ox + dx >= 0 + r && 
       this.oy + dy >= 0 + r)
   {
        this.attr({cx: this.ox + dx, cy: this.oy + dy});
   } // else nothing
},
up = function () {
    // restoring state
    this.attr({opacity: .5});
};

clone.drag(move, start, up); 

};

// Create Context Menu

   </script>

</head>  
<body>  

    <div id="canvas_container"></div> 

</body>  

3 个答案:

答案 0 :(得分:0)

每个拉斐尔的形状都需要在画布内;它不能在外面。您需要使画布填充更大的区域以包含其他形状,可能还有样式的帮助。我不确定它是否能够很好地制作多张拉斐尔画布,因为你需要在其他画布内创建一个新的拉斐尔形状,使用其他形状的属性。你可以做到,但我不会这样做。另外,请小心使用带有JavaScript事件的删除按钮,因为它用于浏览器导航。

答案 1 :(得分:0)

  1. 我希望能够在用户点击它时删除所选克隆(用户按选定克隆上的删除并删除克隆)

  2. 我还想复制克隆并粘贴它。

  3. 我建议使用背景图片&amp; PHP ajax处理事件(onkeypress)。然后uplaod改变了背景图像&amp; make jquery.attr(“style”,“back.jpg”)改变

    BTW,谢谢你,例如,我在这里使用它:

    http://softm.org.ua/projects/roundsel-v1/

答案 2 :(得分:0)

这是拖动对象的一个​​很好的简单起点。看一下页面源代码。我希望这可以帮助你。

http://raphaeljs.com/touches.html