lufy's legend

标题: 为什么拖拽的时候 拖到另一个lsprite的时候 stopDrag就失效了 [打印本页]

作者: s42249    时间: 2014-9-4 14:58
标题: 为什么拖拽的时候 拖到另一个lsprite的时候 stopDrag就失效了
就是把第一个正方形拖到第二个正方形上  松开鼠标 stopDrag没反应

QQ截图20140904145514.png (2.17 KB, 下载次数: 1265)

QQ截图20140904145514.png


作者: lufy    时间: 2014-9-4 15:02
请贴出相关代码,或者提供可运行的demo
否则我无法解决你的问题
作者: s42249    时间: 2014-9-4 15:05
http://lufylegend.com/api/api/LSprite/startDrag.html
用回你这个DEMO  你第一次把第一个正方形拖到第二个正方形上失效就出现了
但是当第二个正方形也被拖出来的时候  第一个正方形拖拽到第二个正方形上stopDrag没有失效  这是为何?
作者: s42249    时间: 2014-9-4 15:05
lufy 发表于 2014-9-4 15:02
请贴出相关代码,或者提供可运行的demo
否则我无法解决你的问题


http://lufylegend.com/api/api/LSprite/startDrag.html
用回你这个DEMO  你第一次把第一个正方形拖到第二个正方形上失效就出现了
但是当第二个正方形也被拖出来的时候  第一个正方形拖拽到第二个正方形上stopDrag没有失效  这是为何?
作者: s42249    时间: 2014-9-4 15:07
lufy 发表于 2014-9-4 15:02
请贴出相关代码,或者提供可运行的demo
否则我无法解决你的问题

应该是这DEMO 第一个正方形拖到另外2个正方形上  有失效问题
另外2个正方形往第一个拖没问题
作者: s42249    时间: 2014-9-4 15:09
                        init(1000 / 60, 'legend',480, 756, main);
                        var con;
                        var a;
                        var b
                        var z=0;
                        function main(){
                                con=new LSprite();
                                con.graphics.drawRect(0,'black',[0,0,480,756],!0,'black')
                                addChild(con);
                                a=new LSprite();
                                a.graphics.drawRect(0,'red',[0,0,100,100],!0,'red');
                                con.addChild(a);
                                b=new LSprite();
                                b.graphics.drawRect(0,'red',[0,0,100,100],!0,'red');
                                addChild(b);
                                b.x=480/2;
                                b.y=756/2;
                                a.addEventListener(LMouseEvent.MOUSE_DOWN,down);
                                a.addEventListener(LMouseEvent.MOUSE_UP,up);
                                addChild(new FPS());
                        }
                        function down(e){
                                e.clickTarget.startDrag(e.touchPointID);
                        }
                        function up(e){
                                e.clickTarget.stopDrag();
                        }
然后这是我的DEMO LUFY帮忙看看什么问题
作者: lufy    时间: 2014-9-4 15:34
s42249 发表于 2014-9-4 15:09
init(1000 / 60, 'legend',480, 756, main);
                        var con;
                        var a;

这是因为对象被遮挡住了的问题
如果以我的demo为例,解决的办法,
1,在点击对象的时候,利用setChildIndex对对象进行排序,让被拖动的对象位于最上层
  1.    LInit(1000/50,"legend",800,450,main);
  2.                         function main(){
  3.                                 LMultitouch.inputMode = LMultitouchInputMode.TOUCH_POINT;
  4.                                 for(var i=0;i<3;i++){
  5.                                         var child = new LSprite();
  6.                                         child.x = 250*i;
  7.                                         child.graphics.drawRect(2,"#ff0000",[0,0,100,100],true,"#ff0000");
  8.                                         child.addEventListener(LMouseEvent.MOUSE_DOWN,ondown);
  9.                                         child.addEventListener(LMouseEvent.MOUSE_UP,onup);
  10.                                         addChild(child);
  11.                                 }
  12.                         }
  13.                         function ondown(e){
  14.                                 e.target.parent.setChildIndex(e.target,e.target.parent.numChildren - 1);
  15.                                 e.target.startDrag(e.touchPointID);
  16.                         }
  17.                         function onup(e){
  18.                                 e.target.stopDrag();
  19.                         }
复制代码
运行如下
http://lufylegend.com/demo/test/52.html


2,可以将鼠标弹起事件,加到父容器上
  1.    LInit(1000/50,"legend",800,450,main);
  2.                         //此变量用来保存正在拖动的对象
  3.                         var dragObject;
  4.                         function main(){
  5.                                 LMultitouch.inputMode = LMultitouchInputMode.TOUCH_POINT;
  6.                                 var layer = new LSprite();
  7.                                 addChild(layer);
  8.                                 for(var i=0;i<3;i++){
  9.                                         var child = new LSprite();
  10.                                         child.x = 250*i;
  11.                                         child.graphics.drawRect(2,"#ff0000",[0,0,100,100],true,"#ff0000");
  12.                                         child.addEventListener(LMouseEvent.MOUSE_DOWN,ondown);
  13.                                         layer.addChild(child);
  14.                                 }
  15.                                 layer.addEventListener(LMouseEvent.MOUSE_UP,onup);
  16.                         }
  17.                         function ondown(e){
  18.                                 dragObject = e.target;
  19.                                 e.target.startDrag(e.touchPointID);
  20.                         }
  21.                         function onup(e){
  22.                                 dragObject.stopDrag();
  23.                         }
复制代码
运行如下
http://lufylegend.com/demo/test/51.html



作者: s42249    时间: 2014-9-4 15:58
lufy 发表于 2014-9-4 15:34
这是因为对象被遮挡住了的问题
如果以我的demo为例,解决的办法,
1,在点击对象的时候,利用setChildInd ...

明白了  非常感谢




欢迎光临 lufy's legend (http://lufylegend.com/forum/) Powered by Discuz! X2.5