Egret社区
1银子
大家好,我这边定义了一个图标类,结构为一个image作为图标的背景,然后在右上角定一个关闭图片,我给关闭图片定义了一个onClose方法,然后给图片类定义了一个拖拽方法。可是每次点击关闭的时候,拖拽的方法也会被触发。我是希望能关闭点击的时候,单纯执行关闭事件就行。有什么思路吗?这个可以用禁用冒泡吗?网上看了,试过了好像不行。 WX20190606-082027@2x.png

最佳答案

查看完整内容

拖拽方法不要加到类上,拖拽方法加到你的背景图片上,一旦拖动图片,就让你的按钮类跟着鼠标的位置走就行。有具体代码最好
分享到 :
0 人收藏

9 个回复

倒序浏览
k7h3v6n  登堂入室 | 2019-6-6 08:23:38
本帖最后由 k7h3v6n 于 2019-6-6 14:13 编辑

拖拽方法不要加到类上,拖拽方法加到你的背景图片上,一旦拖动图片,就让你的按钮类跟着鼠标的位置走就行。有具体代码最好
RY19960629  初窥堂奥 | 2019-6-6 09:06:46
两个都放在容器里面,对容器添加监听,如果节点是关闭按钮的话,就关闭
kycl273  登堂入室 | 2019-6-6 09:56:48
RY19960629 发表于 2019-6-6 09:06
两个都放在容器里面,对容器添加监听,如果节点是关闭按钮的话,就关闭

你好,你那边有类似的参考代码吗?不太懂得如何获取group下的节点,和判断是哪个节点触发呢?谢谢
bl_h  初窥堂奥 | 2019-6-6 10:14:20
[JavaScript] 纯文本查看 复制代码
public onTouch(e: egret.touchEvent): void {
   if( e.target == 关闭按钮 ) {
    .........
    }
    if( e.target == .... ) {
    ........
    }
}
kycl273  登堂入室 | 2019-6-6 10:36:04
bl_h 发表于 2019-6-6 10:14
[mw_shl_code=javascript,true]public onTouch(e: egret.touchEvent): void {
   if( e.target == 关闭按钮 ...

你好,这样好像不行吧:e.target == 关闭按钮    我e.target  是外层的group,怎么可以判断==按钮之类的呢?
bl_h  初窥堂奥 | 2019-6-6 10:54:35
kycl273 发表于 2019-6-6 10:36
你好,这样好像不行吧:e.target == 关闭按钮    我e.target  是外层的group,怎么可以判断==按钮之类的 ...

对你的group添加点击监听
kycl273  登堂入室 | 2019-6-6 11:01:06
bl_h 发表于 2019-6-6 10:54
对你的group添加点击监听

我是这样做的,可是我怎么去判断点击的是谁呢?请看我的代码截图
WX20190606-105857@2x.png

WX20190606-105818@2x-eui.png
bl_h  初窥堂奥 | 2019-6-6 15:08:32
kycl273 发表于 2019-6-6 11:01
我是这样做的,可是我怎么去判断点击的是谁呢?请看我的代码截图

用 e.target 判断 别用 e.currentTarget
kycl273  登堂入室 | 2019-6-7 09:43:26
k7h3v6n 发表于 2019-6-6 11:22
拖拽方法不要加到类上,拖拽方法加到你的背景图片上,一旦拖动图片,就让你的按钮类跟着鼠标的位置走就行。 ...

搞定了,谢谢你的思路!代码如下:最核心关键的是这句【e.currentTarget.parent.x】,要找到当前拖拽对象的父级,也就是当前类。

this.iconBg.addEventListener(egret.TouchEvent.TOUCH_BEGIN, this.mouseDown, this);
this.iconBg.addEventListener(egret.TouchEvent.TOUCH_END, this.mouseUp, this);

private mouseDown(e: egret.TouchEvent) {
                console.log("on mouseDown");
               
        this._distance.x = e.stageX - e.currentTarget.parent.x;
        this._distance.y = e.stageY - e.currentTarget.parent.y;

                this._touchStatus = true;
                //把触摸的对象放在显示列表的顶层
                this.parent.addChild(this);
                this.stage.addEventListener(egret.TouchEvent.TOUCH_MOVE, this.mouseMove, this);       
    }
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|京网文[2014]0791-191号|京ICP证150115号|Egret社区 ( 京ICP备14025619号

Powered by Discuz! X3.2 © 2001-2019 Comsenz Inc.

返回顶部