2013-02-20 30 views
1

我有打电话getObjectsUnderPoint当越来越容器中的问题。 按照easeljs的文档,当mouseEnabled属性设置为true集装箱,在调用getObjectsUnderPoint它应该返回容器中的对象不是它的孩子。easeljs - 集装箱将mouseEnabled不工作

在示例代码,我已经两个容器和每个容器有两个孩子(形状和图像)。它的拖放样本。在mouseup事件上,我正在检查两个容器是否重叠。但是当我打电话给stage.getObjectsUnderPoint时,它返回的数组为[Shape, Image, Shape, Image]。我期待的是两个容器。

我可能会丢失设置舞台或其他东西的一些其他属性。

试图找到网络,没有运气。

var canvas = null; 
    var stage = null; 
    var update = false; 

    function tick(){ 
      if(update){ 
       stage.update(); 
       update = false; 
      } 
    } 

function init(){ 
    canvas = document.getElementById("mycanvas"); 
    stage = new createjs.Stage(canvas); 
      createjs.Ticker.setFPS(60); 
      createjs.Ticker.addListener(window); 
      stage.enableMouseOver(36); 

      var getContainer = function(cname, x, y, imageName){ 

       var container= new createjs.Container(); 
       container.mouseEnabled = true; 
       container.onPress= function(event){ 
         var target= event.target; 

         stage.addChild(target); 

         var offset = { 
          x: target.x - stage.mouseX, 
          y: target.y - stage.mouseY 
         }; 

         event.onMouseMove = function (ev) { 
          target.x = ev.stageX + offset.x; 
          target.y = ev.stageY + offset.y; 
          update = true; 
         } 

         event.onMouseUp = function(ev){ 
          var objects = stage.getObjectsUnderPoint(ev.stageX, ev.stageY); 
          event.stageX, event.stageY 
          objects.forEach(function(object){ 
            console.log('name: ' + object.name); 
          }); 
         } 
       }; 

       container.name = cname; 

       var shape = new createjs.Shape(); 
       shape.graphics 
         .setStrokeStyle(10) 
         .beginFill('#f0f0f0') 
         .beginStroke("#000") 
         .drawCircle(x, y, 100); 
       shape.name = cname + ' - shape'; 

       container.addChild(shape); 

       var image = new Image(); 
       image.onload = function(event){ 
         var bitmap = new createjs.Bitmap(image); 
         bitmap.regX = image.width/2; 
         bitmap.regY = image.height/2; 
         bitmap.x = x, bitmap.y = y; 
         bitmap.scaleX = bitmap.scaleY = 0.8; 

         bitmap.name = cname + ' - image'; 

         container.addChild(bitmap); 
         update = true; 
       }; 
       image.src = imageName; 

       return container; 

      }; 

      var container= getContainer("Original Container", 200, 300, 'cat1.png'); 

      var diffContainer = getContainer("Different Container", 600, 300, 'cat2.png'); 

      stage.addChild(container); 
      stage.addChild(diffContainer); 

      update = true; 
} 

任何帮助,将不胜感激。由于

回答

0

我建议在社区论坛 http://community.createjs.com

你的样品正在按预期发布CreateJS问题。您正在检查释放它的位置处的鼠标下的哪些对象。 getObjectsUnderPoint只会告诉你哪些对象将在单个x/y坐标处填充像素。

如果要确定整个集装箱重叠,你需要做更多的事,比如检查边界框(或更复杂的东西做circle->盒碰撞)。

干杯。