2014-08-30 75 views
0

我使用Craftyjs構建了這個簡單的HTML5拖放遊戲。克隆實體不可拖動,雖然原始實體是,crafyjs

  1. 我創建了一個實體,讓我們稱它爲E1與一些組件,其中一個組件是「Draggable」。
  2. 我創建了一個新的實體E2,並使其作爲E1的克隆(現在E2所應有的一切E1的屬性和成分的複印件)
  3. 上來看,E2克隆具有相同屬性和屬性,但它是不可拖拉!

    var E1 = Crafty.e(「2D,Canvas,apple,Draggable,Gravity,Collision」);

    var E2 = E1.clone();

    E2.attr({x:100,y:100});

    E2.addComponent(「Draggable」);

    E2.enableDrag(); (「Dragging」,function(){ console.log(「E2 is being dragged」); });

我想:

  1. E2.addComponent("Draggable")添加可拖動的組件,但它不會工作!
  2. 綁定Draggable事件,如「Dragging」和「StartDrag」,但它也不起作用!
  3. 力通過使用「enableDrag」的方法使阻力,但沒有任何效果要麼:(
  4. consloe.log E2無論是否使用E2.has("Draggable")具有可拖動的成分,它是回來了!

FYI :所有其他功能(如MouseUp和MouseOver)都不適用於E2以及即使我稍後添加它們 任何有關使Draggable組件在克隆實體中不起作用的想法?

回答

0

foll由於使用最新的穩定版本(v0.6.3),最小的例子適用於我。
你在遊戲初始化時克隆實體嗎?在拖動實體時克隆實體可能會導致狀態不一致。

<html> 
 
    <head></head> 
 
    <body> 
 
    <div id="game"></div> 
 
    <script src="https://rawgithub.com/craftyjs/Crafty/release/dist/crafty-min.js"></script> 
 
    <script> 
 
     Crafty.init(600, 300, document.getElementById('game')); 
 
     Crafty.background('rgb(127,127,127)'); 
 

 
     var ent1 = Crafty.e('2D, Canvas, Color, Draggable') 
 
       .attr({x: 200, y: 50, w: 50, h: 50}) 
 
       .color('blue'); 
 

 
     var ent2 = ent1.clone() 
 
       .attr({x:100, y:100}) 
 
       .color('green'); 
 
    </script> 
 
    </body> 
 
</html>