2013-02-20 35 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->盒碰撞)。

乾杯。