|
°²×¿HID±´Èû¶ûÇúÏßÊÖÊÆ²Ù×÷ʾÀý
- /*
- 🍎===============================================================
- 🍎 °²×¿HID±´Èû¶ûÇúÏßÊÖÊÆ²Ù×÷ʾÀý
- 🍎===============================================================
- 🍎 ±¾ÎļþÑÝʾÈçºÎʹÓÃHIDʵÏÖ±´Èû¶ûÇúÏß·¾¶µÄÊÖÊÆ²Ù×÷
- 🍎 ¿ÉÓÃÓÚÄ£ÄâÈ˹¤»¬¶¯¹ì¼££¬Èƹý¹ì¼£¼ì²âµÈ³¡¾°
- 🍎===============================================================
- */
- // 📌ʾÀý1£º»ù´¡±´Èû¶ûÇúÏßÊÖÊÆÑÝʾ
- function basicBezierGestureDemo() {
- print.log("=== »ù´¡±´Èû¶ûÇúÏßÊÖÊÆÑÝʾ ===");
-
- // ¼ì²éHIDÊÇ·ñ¿ªÆô
- if (!hid.isOn()) {
- print.log("HID먦Æô£¬ÇëÏÈ¿ªÆôHID¹¦ÄÜ");
- return;
- }
-
- // »ñÈ¡É豸ÐÅÏ¢
- var deviceName = hid.getName();
- var deviceID = hid.getDeviceID();
- print.log("HIDÉ豸Ãû³Æ£º", deviceName);
- print.log("É豸Ðͺţº", deviceID);
-
- // Ö´Ðлù´¡±´Èû¶ûÇúÏßÊÖÊÆ
- print.log("Ö´Ðлù´¡±´Èû¶ûÇúÏßÊÖÊÆ...");
- runCustomGesture(161, 1434, 720, 900);
- sleep.millisecond(1000);
- }
- // 📌ʾÀý2£º¶à¹ì¼£±´Èû¶ûÇúÏßÊÖÊÆÑÝʾ
- function multiBezierGestureDemo() {
- print.log("=== ¶à¹ì¼£±´Èû¶ûÇúÏßÊÖÊÆÑÝʾ ===");
-
- // ¼ì²éHIDÊÇ·ñ¿ªÆô
- if (!hid.isOn()) {
- print.log("HID먦Æô£¬ÇëÏÈ¿ªÆôHID¹¦ÄÜ");
- return;
- }
-
- // Ö´Ðжà¸ö²»Í¬µÄ±´Èû¶ûÇúÏßÊÖÊÆ
- print.log("Ö´Ðжà¸ö±´Èû¶ûÇúÏßÊÖÊÆ...");
-
- // ÊÖÊÆ1: ´Ó(161, 1434)µ½(720, 900)
- runCustomGesture(161, 1434, 720, 900);
- sleep.millisecond(1000);
-
- // ÊÖÊÆ2: ´Ó(100, 1000)µ½(800, 500)
- runCustomGesture(100, 1000, 800, 500);
- sleep.millisecond(1000);
-
- // ÊÖÊÆ3: ´Ó(300, 1200)µ½(600, 700)
- runCustomGesture(300, 1200, 600, 700);
- sleep.millisecond(1000);
-
- print.log("¶à¹ì¼£±´Èû¶ûÇúÏßÊÖÊÆÑÝʾÍê³É");
- }
- /**
- * Éú³ÉÖ¸¶¨·¶Î§ÄÚµÄËæ»úÊý
- * @param a {number} ×îСֵ
- * @param b {number} ×î´óÖµ
- * @return {number} Ëæ»úÊý
- */
- function random(a, b) {
- return rand.randNumber(a, b);
- }
- /**
- * ±´Èû¶ûÇúÏßÊÖÊÆÖ´Ðк¯Êý - »ùÓÚHIDʵÏÖ
- * @param time_ms {number} Ö´ÐÐʱ¼ä ms ÀýÈç 3000
- * @param t {number} ¼ä¸ôϵÊý 0-1 ¼ä, ԽСÏßÌõÔ½Ô²Èó,¼ÆËãÁ¿Ô½´ó, ÀýÈç 0.005
- * @param pt {number[][]} ¿ØÖƵã×ø±êµÄ¶þάÊý×é ÀýÈç [[137,169],[140,283]]
- */
- function bezierHID(time_ms, t, pt) {
- print.log("¿ªÊ¼Ö´Ðб´Èû¶ûÇúÏßÊÖÊÆ£¬Ô¤¼ÆÊ±¼ä: " + time_ms + "ms");
-
- // ¼ì²é²ÎÊý
- if (!pt || pt.length < 2) {
- print.log("´íÎ󣺿ØÖƵãÊýÁ¿²»×㣬ÖÁÉÙÐèÒª2¸öµã");
- return;
- }
-
- // ¼ì²éHIDÊÇ·ñ¿ªÆô
- if (!hid.isOn()) {
- print.log("´íÎó£ºHID먦Æô£¬ÇëÏÈ¿ªÆôHID¹¦ÄÜ");
- return;
- }
-
- // ¼ÆËã×ܲ½Êý
- var fps = 1 / t;
- var stepTime = time_ms / fps; // ÿ²½µÄʱ¼ä¼ä¸ô
- print.log("×ܲ½Êý: " + fps + ", ÿ²½Ê±¼ä: " + stepTime + "ms");
-
- // ¼ÆËãµÚÒ»¸öµã²¢°´ÏÂ
- var firstPoint = calculateBezier(0, JSON.parse(JSON.stringify(pt)));
- print.log("Æðʼµã: [" + firstPoint[0] + ", " + firstPoint[1] + "]");
- hid.touchDown(0, firstPoint[0], firstPoint[1]);
- sleep.millisecond(stepTime);
-
- // ÒÆ¶¯µ½Öмä¸÷µã
- for (var i = 1; i < fps; i++) {
- var copyArr = JSON.parse(JSON.stringify(pt)); // ¿½±´Ò»·Ý jsµÄÊý×éÊÇÒýÓô«µÝ
- var xy = calculateBezier(i * t, copyArr);
- hid.touchMove(0, xy[0], xy[1]);
- sleep.millisecond(stepTime);
- }
-
- // ¼ÆËã×îºóÒ»¸öµã²¢Ì§Æð
- var lastPoint = calculateBezier(1, JSON.parse(JSON.stringify(pt)));
- print.log("½áÊøµã: [" + lastPoint[0] + ", " + lastPoint[1] + "]");
- hid.touchMove(0, lastPoint[0], lastPoint[1]);
- sleep.millisecond(stepTime);
- hid.touchUp(0);
-
- print.log("±´Èû¶ûÇúÏßÊÖÊÆÖ´ÐÐÍê³É");
- }
- /**
- * ¼ÆËã±´Èû¶ûÇúÏßÉϵĵã
- * @param t {number} 0 ~ 1µÄʱ¼ä²ÎÊý
- * @param point2Fs {number[][]} ±´Èû¶ûµã¼¯ºÏ
- * @return {number[]} ·µ»Øµ±Ç°Ê±¼äϵı´Èû¶ûµã
- */
- function calculateBezier(t, point2Fs) {
- var len = point2Fs.length;
- for (var i = len - 1; i > 0; i--) {
- for (var j = 0; j < i; j++) {
- point2Fs[j][0] = point2Fs[j][0] + (point2Fs[j + 1][0] - point2Fs[j][0]) * t;
- point2Fs[j][1] = point2Fs[j][1] + (point2Fs[j + 1][1] - point2Fs[j][1]) * t;
- }
- }
- return [parseInt(point2Fs[0][0]), parseInt(point2Fs[0][1])];
- }
- /**
- * ʾÀý£º×Ô¶¨Òå±´Èû¶ûÇúÏßÊÖÊÆ
- * @param startX {number} ÆðµãX×ø±ê
- * @param startY {number} ÆðµãY×ø±ê
- * @param endX {number} ÖÕµãX×ø±ê
- * @param endY {number} ÖÕµãY×ø±ê
- */
- function runCustomGesture(startX, startY, endX, endY) {
- // Éú³ÉÒ»¸öËæ»úµÄ¿ØÖƵã
- var ctrlX = random(Math.min(startX, endX), Math.max(startX, endX));
- var ctrlY = random(Math.min(startY, endY), Math.max(startY, endY));
-
- // ¹¹Ôì¿ØÖÆµãÊý×é (4¸öµãµÄ±´Èû¶ûÇúÏß)
- var points = [
- [startX, startY],
- [ctrlX, ctrlY],
- [ctrlX, ctrlY],
- [endX, endY]
- ];
-
- print.log("Ö´ÐÐ×Ô¶¨ÒåÊÖÊÆ: ´Ó(" + startX + "," + startY + ")µ½(" + endX + "," + endY + ")");
- bezierHID(2000, 0.01, points);
- }
- // 📌¹¤¾ßº¯Êý£º°²È«Ö´Ðб´Èû¶ûÇúÏßÊÖÊÆ
- function safeBezierGesture(startX, startY, endX, endY, retries) {
- if (typeof retries === 'undefined') retries = 3;
-
- for (var i = 0; i < retries; i++) {
- try {
- runCustomGesture(startX, startY, endX, endY);
- print.log("±´Èû¶ûÇúÏßÊÖÊÆÖ´Ðгɹ¦");
- return true;
- } catch (error) {
- print.log("ÊÖÊÆÖ´ÐÐʧ°Ü£¬ÖØÊÔµÚ " + (i + 1) + " ´Î£º" + error);
- sleep.millisecond(500);
- }
- }
- print.log("±´Èû¶ûÇúÏßÊÖÊÆ×îÖÕÖ´ÐÐʧ°Ü");
- return false;
- }
- // 📌Ö÷º¯Êý£ºÔËÐÐËùÓÐÑÝʾ
- function runAllBezierGestureDemos() {
- print.log("\n🍎===========================================");
- print.log("🍎 HID ±´Èû¶ûÇúÏßÊÖÊÆÑÝʾ¿ªÊ¼");
- print.log("🍎===========================================");
-
- // ÔËÐи÷¸öÑÝʾ
- basicBezierGestureDemo();
- sleep.millisecond(2000);
-
- multiBezierGestureDemo();
- sleep.millisecond(2000);
-
- print.log("\n🍎===========================================");
- print.log("🍎 HID ±´Èû¶ûÇúÏßÊÖÊÆÑÝʾ½áÊø");
- print.log("🍎===========================================");
- }
- // 📌¿ìËÙ²âÊÔº¯Êý
- function quickBezierTest() {
- print.log("=== HID ±´Èû¶ûÇúÏßÊÖÊÆ¿ìËÙ²âÊÔ ===");
-
- if (!hid.isOn()) {
- print.log("❌ HID먦Æô");
- return;
- }
-
- print.log("✅ HIDÒÑ¿ªÆô");
- print.log("📱 É豸£º", hid.getDeviceID());
- print.log("🏷️ Ãû³Æ£º", hid.getName());
-
- // ¼òµ¥ÊÖÊÆ²âÊÔ
- runCustomGesture(161, 1434, 720, 900);
- sleep.millisecond(1000);
- print.log("✅ ±´Èû¶ûÇúÏßÊÖÊÆ²âÊÔÍê³É");
-
- print.log("🎉 ¿ìËÙ²âÊÔÈ«²¿Íê³É");
- }
- /*
- 🍎ʹÓ÷½·¨£º
- 1. È·±£HIDÉ豸ÒÑÕýÈ·Á¬½Ó²¢¿ªÆô
- 2. ¸ù¾ÝÐèÒªµ÷ÓÃÏàÓ¦µÄÑÝʾº¯Êý£º
- - basicBezierGestureDemo() // »ù´¡±´Èû¶ûÇúÏßÊÖÊÆÑÝʾ
- - multiBezierGestureDemo() // ¶à¹ì¼£±´Èû¶ûÇúÏßÊÖÊÆÑÝʾ
- - runCustomGesture() // ×Ô¶¨Òå±´Èû¶ûÇúÏßÊÖÊÆ
- - safeBezierGesture() // °²È«±´Èû¶ûÇúÏßÊÖÊÆ
- - runAllBezierGestureDemos() // ÔËÐÐÈ«²¿ÑÝʾ
- - quickBezierTest() // ¿ìËÙ²âÊÔ
- 🍎×¢ÒâÊÂÏ
- 1. ÔËÐÐǰÇëÈ·±£Ä¿±êÉ豸ÆÁÄ»½âËø
- 2. ×ø±êºÍʱ¼äÑӳٿɸù¾Ýʵ¼ÊÇé¿öµ÷Õû
- 3. ½¨ÒéÔÚ²âÊÔ»·¾³ÏÂÔËÐУ¬±ÜÃâÎó²Ù×÷
- 🍎¼¼ÊõÖ§³Ö£º
- QQȺ£º711841924 (Ⱥһ)
- QQȺ£º528816639 (Æ»¹ûÄÚ²âȺ)
- */
- // ×Ô¶¯Æô¶¯¿ìËÙ²âÊÔ
- print.log("🍎 °²×¿HID±´Èû¶ûÇúÏßÊÖÊÆÊ¾Àý×Ô¶¯ÔËÐпªÊ¼...");
- sleep.millisecond(1000);
- // ¿ìËÙ²âÊÔ
- quickBezierTest();
- sleep.millisecond(2000);
- print.log("🍎 ±´Èû¶ûÇúÏßÊÖÊÆÊ¾ÀýÔËÐÐÍê³É£¡");
¸´ÖÆ´úÂë
|
|