HarmonyOS 鸿蒙Next SourceTool枚举使用踩坑记录

发布于 1周前 作者 sinazl 来自 鸿蒙OS

HarmonyOS 鸿蒙Next SourceTool枚举使用踩坑记录

SourceTool,一个平平无奇的枚举,你却玩起来了躲猫猫。

我们简单的输出一下:

    console.log(‘SourceTool.Unknown:’ + SourceTool.Unknown);
console.log(‘SourceTool.Finger:’ + SourceTool.Finger);
console.log(‘SourceTool.Pen:’ + SourceTool.Pen);
console.log(‘SourceTool.MOUSE:’ + SourceTool.MOUSE);
console.log(‘SourceTool.TOUCHPAD:’ + SourceTool.TOUCHPAD);
console.log(‘SourceTool.JOYSTICK:’ + SourceTool.JOYSTICK);<button style="position: absolute; padding: 4px 8px 0px; cursor: pointer; top: 8px; right: 8px; font-size: 14px;">复制</button>

看看结果:

12-30 23:46:36.722   2756-2756     A03d00/JSAPP                    apppool               I     SourceTool.Unknown:0
12-30 23:46:36.722   2756-2756     A03d00/JSAPP                    apppool               I     SourceTool.Finger:undefined
12-30 23:46:36.722   2756-2756     A03d00/JSAPP                    apppool               I     SourceTool.Pen:undefined
12-30 23:46:36.722   2756-2756     A03d00/JSAPP                    apppool               I     SourceTool.MOUSE:7
12-30 23:46:36.722   2756-2756     A03d00/JSAPP                    apppool               I     SourceTool.TOUCHPAD:9
12-30 23:46:36.722   2756-2756     A03d00/JSAPP                    apppool               I     SourceTool.JOYSTICK:10<button style="position: absolute; padding: 4px 8px 0px; cursor: pointer; top: 8px; right: 8px; font-size: 14px;">复制</button>

Finger 与 Pen 居然是undefined。

那既然是躲猫猫,那么真正的 Finger 与 Pen 必然是藏起来了。其实他们定义了,只不过名字不对。他们其实叫 FINGER 与 PEN。

声明的枚举与定义的实际枚举有出入,那我们又如何真正的召唤出 FINGER 与 PEN 呢?

且看下面的改动:

    console.log(‘SourceTool.Unknown:’ + SourceTool.Unknown);
console.log(‘SourceTool.FINGER:’ + SourceTool[“FINGER”]);
console.log(‘SourceTool.PEN:’ + SourceTool[“PEN”]);
console.log(‘SourceTool.MOUSE:’ + SourceTool.MOUSE);
console.log(‘SourceTool.TOUCHPAD:’ + SourceTool.TOUCHPAD);
console.log(‘SourceTool.JOYSTICK:’ + SourceTool.JOYSTICK);<button style="position: absolute; padding: 4px 8px 0px; cursor: pointer; top: 8px; right: 8px; font-size: 14px;">复制</button>

再看看输出结果:

12-31 00:12:35.578   10102-10102   A03d00/JSAPP                    com.gitee…lication  I     SourceTool.Unknown:0
12-31 00:12:35.578   10102-10102   A03d00/JSAPP                    com.gitee…lication  I     SourceTool.FINGER:1
12-31 00:12:35.578   10102-10102   A03d00/JSAPP                    com.gitee…lication  I     SourceTool.PEN:2
12-31 00:12:35.578   10102-10102   A03d00/JSAPP                    com.gitee…lication  I     SourceTool.MOUSE:7
12-31 00:12:35.578   10102-10102   A03d00/JSAPP                    com.gitee…lication  I     SourceTool.TOUCHPAD:9
12-31 00:12:35.578   10102-10102   A03d00/JSAPP                    com.gitee…lication  I     SourceTool.JOYSTICK:10<button style="position: absolute; padding: 4px 8px 0px; cursor: pointer; top: 8px; right: 8px; font-size: 14px;">复制</button>

FINGER 与 PEN 被真正召唤出来了。

所以在实现触摸交互时可以这样使用:

    if (event.sourceTool === SourceTool[“FINGER”]) {

} <span class="hljs-keyword">else</span> <span class="hljs-keyword">if</span> (event.sourceTool === SourceTool[<span class="hljs-string">"PEN"</span>]) {

} <span class="hljs-keyword">else</span> <span class="hljs-keyword">if</span> (event.sourceTool === SourceTool.MOUSE) {

} <span class="hljs-keyword">else</span> <span class="hljs-keyword">if</span> (event.sourceTool === SourceTool.TOUCHPAD) {

} <span class="hljs-keyword">else</span> <span class="hljs-keyword">if</span> (event.sourceTool === SourceTool.JOYSTICK) {

}</code><button style="position: absolute; padding: 4px 8px 0px; cursor: pointer; top: 8px; right: 8px; font-size: 14px;">复制</button></pre>  <p>当然也可以直接使用该枚举的数值:1、2。但终究还是得靠SDK修正这个枚举的声明值。</p>  <p>不用尝试本地修改common.d.ts,编译不会通过。</p></div></div>

更多关于HarmonyOS 鸿蒙Next SourceTool枚举使用踩坑记录的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html

1 回复

更多关于HarmonyOS 鸿蒙Next SourceTool枚举使用踩坑记录的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


HarmonyOS 鸿蒙Next SourceTool枚举使用踩坑记录回复

在HarmonyOS鸿蒙系统中,使用Next SourceTool进行枚举操作时,可能会遇到一些常见的坑点。以下是根据你的记录,直接列出的几个关键点:

  1. 枚举值范围:确保所使用的枚举值在定义范围内,超出范围可能导致未定义行为。

  2. 类型匹配:在将枚举值传递给函数或变量时,注意类型必须严格匹配,否则可能引发编译错误或运行时异常。

  3. 枚举初始化:确保枚举类型在使用前已正确初始化,避免使用未初始化的枚举值。

  4. 跨模块使用:若枚举值需要在多个模块间共享,确保枚举定义在公共头文件中,并正确包含该头文件。

  5. 内存管理:虽然枚举本身通常不涉及复杂的内存管理,但在使用枚举值进行动态内存分配时,仍需注意内存泄漏和野指针问题。

  6. 编译器兼容性:不同版本的编译器对枚举的处理可能有所不同,确保在目标编译器上测试枚举的使用。

若你在实际使用中遇到上述或其他相关问题,并无法通过上述信息解决,请直接联系官网客服获取进一步帮助。官网地址是:https://www.itying.com/category-93-b0.html

回到顶部