Molstar 鼠标与键盘事件监听

更多内容请查看

// 鼠标点击事件的监听方式
// this.plugin.behaviors.interaction.click.subscribe(() => { });
this.subscribe(this.plugin.behaviors.interaction.click, this.interactionClick);

// 键盘事件的监听方式
// this.plugin.behaviors.interaction.key.subscribe(() => { });
this.subscribe(this.plugin.behaviors.interaction.key, this.interactionKey);

事件回调函数

// 鼠标点击回调事件
const interactionClick = async (event: InteractivityManager.ClickEvent) => {
  const { button, modifiers, page } = event;

  // 鼠标左键
  if (
    Binding.match(
      Binding(
        [Binding.Trigger(ButtonsType.Flag.Primary, ModifiersKeys.create({}))],
        "edit",
        "Press ${triggers}"
      ),
      button,
      modifiers
    )
  ) {
    console.log("鼠标左键");
  }

  // 鼠标右键
  if (
    Binding.match(
      Binding(
        [Binding.Trigger(ButtonsType.Flag.Secondary, ModifiersKeys.create({}))],
        "edit",
        "Press ${triggers}"
      ),
      button,
      modifiers
    )
  ) {
    console.log("鼠标右键");
  }
};

// 键盘回调事件
const interactionKey = async (event: KeyInput) => {
  const { code, key, modifiers } = event;
  // Ctrl+z
  if (
    Binding.matchKey(
      Binding(
        [Binding.TriggerKey("z", ModifiersKeys.create({ control: true }))],
        "undo",
        "Press ${triggers}"
      ),
      code,
      modifiers,
      key
    )
  ) {
    console.log("Ctrl+z");
  }

  // Ctrl+y
  if (
    Binding.matchKey(
      Binding(
        [Binding.TriggerKey("y", ModifiersKeys.create({ control: true }))],
        "redo",
        "Press ${triggers}"
      ),
      code,
      modifiers,
      key
    )
  ) {
    console.log("Ctrl+y");
  }

  // Ctrl+Delete
  if (
    Binding.matchKey(
      Binding(
        [Binding.TriggerKey("Delete", ModifiersKeys.create({ control: true }))],
        "Clear All",
        "Press ${triggers}"
      ),
      code,
      modifiers,
      key
    )
  ) {
    console.log("Ctrl+Delete");
  }
};

事件取消监听

// 开启监听
const clickSub = this.plugin.behaviors.interaction.click.subscribe(() => {});

// 取消监听
clickSub.unsubscribe();

// 开启监听
const keySub = this.plugin.behaviors.interaction.key.subscribe(() => {});

// 取消监听
keySub.unsubscribe();
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值