HarmonyOS 鸿蒙Next SourceTool枚举使用踩坑记录
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
更多关于HarmonyOS 鸿蒙Next SourceTool枚举使用踩坑记录的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
HarmonyOS 鸿蒙Next SourceTool枚举使用踩坑记录回复
在HarmonyOS鸿蒙系统中,使用Next SourceTool进行枚举操作时,可能会遇到一些常见的坑点。以下是根据你的记录,直接列出的几个关键点:
-
枚举值范围:确保所使用的枚举值在定义范围内,超出范围可能导致未定义行为。
-
类型匹配:在将枚举值传递给函数或变量时,注意类型必须严格匹配,否则可能引发编译错误或运行时异常。
-
枚举初始化:确保枚举类型在使用前已正确初始化,避免使用未初始化的枚举值。
-
跨模块使用:若枚举值需要在多个模块间共享,确保枚举定义在公共头文件中,并正确包含该头文件。
-
内存管理:虽然枚举本身通常不涉及复杂的内存管理,但在使用枚举值进行动态内存分配时,仍需注意内存泄漏和野指针问题。
-
编译器兼容性:不同版本的编译器对枚举的处理可能有所不同,确保在目标编译器上测试枚举的使用。
若你在实际使用中遇到上述或其他相关问题,并无法通过上述信息解决,请直接联系官网客服获取进一步帮助。官网地址是:https://www.itying.com/category-93-b0.html 。