首页 > 其他分享 >Konva 内容重叠无法触发点击事件的解决方法

Konva 内容重叠无法触发点击事件的解决方法

时间:2023-06-25 14:12:59浏览次数:34  
标签:styles 触发 layer Konva height width 点击 size

写在前面:

  • 环境:Vue3 + Konva + vite
  • 在绘制界面时踩坑,主要是关于 listening 属性的使用
  • 在绘制界面时,不免出现有内容重叠的情况,这会影响事件的触发

  • 使用设置listening属性可以允许事件穿透,默认为true不可穿透(示例如下)

    <template>
      <div>
        <div id="mybtn"></div>
      </div>
    </template>
    
    <script>
    import Konva from 'konva';
    
    export default {
      data() {
        return {
          position: {
            posX: 0,
            posY: 0,
          },
          size: {
            width: 100,
            height: 50,
          },
          styles: {
            borderSize: 1,
            fontSize: 12,
            backgroundColor: '',
            fontColor: '#000',
            borderColor: '#000',
            opacity: 1,
          },
          btnText: 'Button',
        };
      },
      mounted() {
        this.initializeKonva();
      },
      methods: {
        initializeKonva() {
          const stage = new Konva.Stage({
            container: 'mybtn',
            width: this.size.width,
            height: this.size.height,
          });
    
          const layer = new Konva.Layer();
          stage.add(layer);
    
          const button = new Konva.Rect({
            x: this.position.posX,
            y: this.position.posY,
            width: this.size.width,
            height: this.size.height,
            fill: this.styles.backgroundColor,
            stroke: this.styles.borderColor,
            strokeWidth: this.styles.borderSize,
            opacity: this.styles.opacity,
          });
    
          const buttonText = new Konva.Text({
            x: this.position.posX,
            y: this.position.posY,
            width: this.size.width,
            height: this.size.height,
            text: this.btnText,
            fontSize: this.styles.fontSize,
            fontFamily: 'Arial',
            fill: this.styles.fontColor,
            align: 'center',
            verticalAlign: 'middle',
            listening: false,   // 设置listening为false,允许事件穿透
          });
    
          button.on('click', this.clickBtn);
    
          layer.add(button);
          layer.add(buttonText);
          layer.draw();
    
        },
    
        clickBtn() {
          console.log('clickBtn run');
          // 点击事件逻辑
        }
      },
    };
    </script>
    
    <style scoped>
    div {
      width: 100%;
      height: 100%;
    }
    </style>
    

标签:styles,触发,layer,Konva,height,width,点击,size
From: https://www.cnblogs.com/dandelion-000-blog/p/17502787.html

相关文章

  • zabbix 监控机器监听的端口 + 触发器 表达式理解
    在zabbixweb页面配置item,监控监听的21端口配置trigger5.{www.zabbix.com:system.cpu.load[all,avg1].last(0)}>5                注释:其中www.solutionware.com.cn:system.cpu.load[all,avg1]代表的监控项目,其中主机位www.solutioneare.com.cn,监控的项的key为cp......
  • 12、zabbix-触发器(trigger)-抓取网卡流量阈值
    1、创建监控项为网络上行下载的触发器   ......
  • 完整的触发顺序
    触发钩子的完整顺序:将路由导航、keep-alive、和组件生命周期钩子结合起来的,触发顺序,假设是从a组件离开,第一次进入b组件:1.beforeRouteLeave:路由组件的组件离开路由前钩子,可取消路由离开。2.beforeEach:路由全局前置守卫,可用于登录验证、全局路由loading等。3.beforeEn......
  • 事件分发三连问:事件是如何从屏幕点击最终到达 Activity 的?CANCEL 事件什么时候会触发?
    一、题面试中提到安卓的事件分发,我们一般都能说到从Activity->Window->DecorView->ViewGroup->View的dispatchTouchEvent流程,这个是最基本的需要掌握的,由此能深入引出一些什么知识点呢?事件是如何从屏幕点击最终到达Activity的?CANCEL事件什么时候会触发?如何解决滑动......
  • android RecyclerView嵌套 RecyclerView 子item 和 父item点击事件如何处理
    前言经常会遇到列表嵌套列表的场景,那么父item和子item会有点击重叠该怎么处理尼?先上效果父adapteropenclassStoreListAdapter(layoutResId:Int,data:MutableList<StoreGoodsBean>):BaseQuickAdapter<StoreGoodsBean,BaseViewHolder>(layoutResId,data){//子adapt......
  • vue3 - onMounted 多次触发 - 解决
    1.原因<router-view>外面使用了 <keep-alive>导致多次触发 onMounted生命周期2.解决使用<keep-alive>的第一层页面初始化数据的生命周期应该放弃使用 onMounted 应该使用onActivated用法与 onMounted 是一样的 ......
  • app直播源代码,Android中点击图片放大的简单方法
    app直播源代码,Android中点击图片放大的简单方法Java代码: publicvoidonThumbnailClick(Viewv){//finalAlertDialogdialog=newAlertDialog.Builder(this).create();//ImageViewimgView=getView();//dialog.setView(imgView);//dialog.show();  //全屏显示的......
  • Java乐观锁实现文章点击量、收藏计数、点赞计数
    Java乐观锁实现文章点击量、收藏计数、点赞计数......
  • ui设计师界面combobox控件添加鼠标点击信号
    一、概述combobox下拉框控件下拉后会显示预设好的选择内容,可是想要实现显示内容动态可变,点击的时候实时刷新到最新内容,就需要点击信号,但是qt本身没有实现这个点击信号。要实现这个功能本质方法是需要重写combobox的鼠标点击事件,这里介绍如何为ui设计师界面的combobox控件添加......
  • win10笔记本点击设置-系统卡住,没反应
    1、按Windows+x打开超级菜单,点击“命令提示符(管理)成员)”;2、键入以下命令:sfc/SCANNOW 3、如果检测到问题但无法修复,请使用以下命令:Dism/Online/Cleanup-Image/ScanHealth4、该命令会扫描所有系统文件,与官方系统文件进行对比,对电脑进行不一致扫描。Dism/Online/Cleanup......