点击登录

讨论 [求教] 弄了個點擊移動時鐘的功能,但是成功又不成功。請大佬們指點。

hxhwing

Lv.0
社区会员
題外話:
前陣子買了手環7,所以就搞起自定義錶盤來(生活源於折騰)。

我現在用的是鄭羊羊的錶盤,然後混搭了梁小蜗的實用工具錶盤。感謝兩位作者。

鄭羊羊 錶盤:
https://www.bandbbs.cn/threads/3980/

梁小蜗 實用主義錶盤

現在就研究這個點擊移動時鐘的功能,從而怎樣換背景圖,都可以自己移動時鐘不擋圖。
之後有空的話,再看看要不要弄個點擊錶盤/定時來更換多張背景圖(朋友的7PRO手環,好似可以點擊錶盤來隨意切換8張圖片)。

==============
正題:

由於相冊錶盤的背景圖可以更改,所以我就想是不是可以弄個功能:
- 添加了兩個點擊選區(插件上移/插件上移),使某些插件的Y點附加offset_Y的參數,從而達到插件可以隨意上移下移,讓使用者可以隨意調整錶盤時鐘的位置。
感覺會有的優點:
可以自行適配不同背景圖,盡量不讓時鐘插件擋圖。
更簡單的更改位置,不用進錶盤包更改插件位置,也不用再刷手環。

目前結果:
添加了兩個點擊選區 (上移: 周上午位置 下移: 鬧鈴位置)
添加了offset_Y參數
添加了updateWin來更新主要插件的y軸屬性
不過在我測試的時候,插件顯示發現了一些奇怪的情況。

問題:
點擊選區後, offset正常增加/減少,updateWin出現部份成功,部份不成功。
1. 周一至周五插件,也正常跟著移動。
2. 同一個時鐘插件里,時﹑分﹑秒都可以跟著上移/下移,但是上下午的位置完全不跟著動。
3. 月日插件: 會延遲偏移,要息屏再開屏才正常移位。而且月份由2位數變成單位數。(08 > 8 )
4. 鬧鈴完全不跟著動,甚至失蹤。

Z1.jpg

代碼如下:
//各類顯示窗 定位

JavaScript:
let lock_X = 39, lock_Y = 20;
let disturb_X = 58, disturb_Y = 20;
let bluetooth_X = 77, bluetooth_Y = 20;
let batlogo_X = 96, batlogo_Y = 20;
let batlevel_X = 115, batlevel_Y = 20;
let week_X = 8, week_Y = 120;
let ampm_X = 56, ampm_Y = 120;
let month_X = 104, month_Y = 120;
let day_X = 148, day_Y = 120;
let hour_X = 8, hour_Y = 150;
let minute_X = 102, minute_Y = 150;
let alarmlogo_X = 10, alarmlogo_Y = 220;
let alarm_X = 26, alarm_Y = 220;
let second_X = 150, second_Y = 220;
let step_X = 25, step_Y = 405;
let heart_X = 55, heart_Y = 445;

var Win_Y = 120, offset_Y = 0;  //y: 120
let Now_Y = Win_Y + offset_Y;

-------------------

//參數內容 例子1
let hhmmss = {  //時分秒參數
            hour_zero: true,
            hour_startX: hour_X,
            hour_startY: hour_Y + offset_Y, //  時-Y軸
            hour_array: n,
            hour_space: 0,  //7
            // hour_align: hmUI.align.CENTER_H,
            hour_align: hmUI.align.RIGHT,
            minute_zero: true,
            minute_startX: minute_X,
            minute_startY: minute_Y + offset_Y,        //分-Y軸
            minute_array: n,
            minute_space: 0, //7
            minute_align: hmUI.align.LEFT,
            am_x: ampm_X,  //上下午
            am_y: ampm_Y + offset_Y,            //上午-Y軸
            am_sc_path: "images/ampm/amsc.png",
            am_tc_path: "images/ampm/amsc.png",
            am_en_path: "images/ampm/am.png",
            pm_x: ampm_X,  //上下午
            pm_y: ampm_Y + offset_Y,            //下午-Y軸
            pm_sc_path: "images/ampm/pmsc.png",
            pm_tc_path: "images/ampm/pmsc.png",
            pm_en_path: "images/ampm/pm.png",
            show_level: hmUI.show_level.ONLY_NORMAL,
            second_zero: true,
            second_startX: second_X,
            second_startY: second_Y + offset_Y,        //秒-Y軸
            second_array: s,
            second_space: 0,
            second_align: hmUI.align.LEFT
          };

-------------------

//Widget創建
            let hhmmssWidget = meTime.createWidget(hmUI.widget.IMG_TIME, hhmmss);  //時分秒
            let ddddWidget = meTime.createWidget(hmUI.widget.IMG_WEEK, dddd);        //周
            let ddWidget = meTime.createWidget(hmUI.widget.IMG_DATE, dd);        //月日
            let batlogoWidget = meTime.createWidget(hmUI.widget.IMG_LEVEL, batlogo);    //電量圖
            let batlevelWidget = meTime.createWidget(hmUI.widget.TEXT_IMG, batlevel);    //電量
            let cWidget = meTime.createWidget(hmUI.widget.IMG_STATUS, c);        //鎖屏
            let btWidget = meTime.createWidget(hmUI.widget.IMG_STATUS, bt);        //藍芽
            let IWidget = meTime.createWidget(hmUI.widget.IMG_STATUS, I);        //勿擾
            let bsWidget = meTime.createWidget(hmUI.widget.TEXT_IMG, bs);        //步數
            let xlWidget = meTime.createWidget(hmUI.widget.TEXT_IMG, xl);        //心率


-------------------

//視窗偏移按鈕
let WinUp_X = 8, WinUp_Y = 95, WinUp_W = 80, WinUp_H = 50;
let WinDown_X = 8, WinDown_Y = 220, WinDown_W = 64, WinDown_H = 50;
 
 
            let WinUp = meTime.createWidget(hmUI.widget.TEXT, { //入口 視窗上移
              x: WinUp_X,
              y: WinUp_Y,
              w: WinUp_W,
              h: WinUp_H,
              //text: '視窗上移',
              show_level: hmUI.show_level.ONLY_NORMAL
 
            });
            let WinDown = meTime.createWidget(hmUI.widget.TEXT, { //入口 視窗下移
              x: WinDown_X,
              y: WinDown_Y,
              w: WinDown_W,
              h: WinDown_H,
              //text: '視窗下移',
              show_level: hmUI.show_level.ONLY_NORMAL
            });
    
// 視窗调节监听

// Now_Y 為主要插件的Y軸頂點,用來防止視窗上移過高或下移過低。預設視窗不高於20,不低於300。之後再調整下。
//每次點擊,offset_Y 增加/減少 10
 WinUp.addEventListener(hmUI.event.CLICK_UP, function (info) {
              if (Now_Y < 20 ) {
                offset_Y = offset_Y - 0;
              } else {
                offset_Y = offset_Y - 10;
              }
              updateWin();
            });
            WinDown.addEventListener(hmUI.event.CLICK_UP, function (info) {
              if (Now_Y > 300 ) {
                offset_Y = offset_Y - 0;
              } else {
                offset_Y = offset_Y + 10;
              };
              updateWin();
            });

//更新視窗屬性
        function updateWin() {
             hhmmssWidget.setProperty(hmUI.prop.MORE, {
                 am_y: ampm_Y + offset_Y,                 //上午y
                 pm_y: ampm_Y + offset_Y,                    //下午y
                 hour_startY: hour_Y + offset_Y,          //時y
                 minute_startY: minute_Y + offset_Y,     //分y
                 second_startY: second_Y + offset_Y     //秒y
             });
             ddWidget.setProperty(hmUI.prop.MORE, {
                 month_startY: month_Y + offset_Y,          //月y
                 day_startY: day_Y + offset_Y             //日y
             });
             ddddWidget.setProperty(hmUI.prop.MORE, { y: week_Y + offset_Y });     //周y
             alarmlogoWidget.setProperty(hmUI.prop.MORE, { y: alarmlogo_Y + offset_Y });    //鬧鈴圖y
             alarmWidget.setProperty(hmUI.prop.MORE, { y: alarm_Y + offset_Y });          //鬧鈴y
 
            Now_Y = Win_Y + offset_Y;
            hmUI.showToast({ text: 'Y軸:' + Now_Y + '\n偏移:' + offset_Y });
        }
 

附件

  • 鄭羊羊混搭梁小蝸實用工具錶盤.bin
    174.2 KB 下载
  • Z1.jpg
    Z1.jpg
    331.8 KB 下载
最后编辑:
想法不错,作为小白看到这些代码着实头疼!作者继续加油,支持你!👍👍👍👍
 
想法不错,作为小白看到这些代码着实头疼!作者继续加油,支持你!👍👍👍👍
我也是小白,因為頭疼,所以來這求助大佬。🤣🤣🤣
 
最后编辑:
您的思路应该是对的,这些问题可能是因为手环所使用的JS引擎引起的,我的建议如下:
1. offset_Y作为updateWin() 的参数进行传值。
2. 将参数进行运算之后再使用setProperty
3. 加入zepp的官方开发群(飞书)进行进一步的讨论,链接可以在zepp OS的文档中找到。
 
您的思路应该是对的,这些问题可能是因为手环所使用的JS引擎引起的,我的建议如下:
1. offset_Y作为updateWin() 的参数进行传值。
2. 将参数进行运算之后再使用setProperty
3. 加入zepp的官方开发群(飞书)进行进一步的讨论,链接可以在zepp OS的文档中找到。
謝謝大佬。剛才去看了一下,好似是有group的參數,直接把group的y值移動就行了。 順便還添加了9張背景圖的切換功能了。
 
所以
這個錶盤什麼時候上架
哈哈 錶盤算是弄了(換了另一個做底盤 把功能做上去 就是AOD不生效)
不過最近一直都在忙 就沒時間再去優化 以及把使用文稿寫出來
 
目前就隨便弄了兩個模式 定時換圖 以及靜態圖
靜態圖 可以自己選擇某張圖片
定時換圖 就是根據時間來選擇對應的圖片 (目前隨便截了12張時辰圖測試)
如果有空 再想想如何更人性化 以及優化
 
題外話:
前陣子買了手環7,所以就搞起自定義錶盤來(生活源於折騰)。

我現在用的是鄭羊羊的錶盤,然後混搭了梁小蜗的實用工具錶盤。感謝兩位作者。

鄭羊羊 錶盤:
https://www.bandbbs.cn/threads/3980/

梁小蜗 實用主義錶盤

現在就研究這個點擊移動時鐘的功能,從而怎樣換背景圖,都可以自己移動時鐘不擋圖。
之後有空的話,再看看要不要弄個點擊錶盤/定時來更換多張背景圖(朋友的7PRO手環,好似可以點擊錶盤來隨意切換8張圖片)。

==============
正題:

由於相冊錶盤的背景圖可以更改,所以我就想是不是可以弄個功能:
- 添加了兩個點擊選區(插件上移/插件上移),使某些插件的Y點附加offset_Y的參數,從而達到插件可以隨意上移下移,讓使用者可以隨意調整錶盤時鐘的位置。
感覺會有的優點:
可以自行適配不同背景圖,盡量不讓時鐘插件擋圖。
更簡單的更改位置,不用進錶盤包更改插件位置,也不用再刷手環。

目前結果:
添加了兩個點擊選區 (上移: 周上午位置 下移: 鬧鈴位置)
添加了offset_Y參數
添加了updateWin來更新主要插件的y軸屬性
不過在我測試的時候,插件顯示發現了一些奇怪的情況。

問題:
點擊選區後, offset正常增加/減少,updateWin出現部份成功,部份不成功。
1. 周一至周五插件,也正常跟著移動。
2. 同一個時鐘插件里,時﹑分﹑秒都可以跟著上移/下移,但是上下午的位置完全不跟著動。
3. 月日插件: 會延遲偏移,要息屏再開屏才正常移位。而且月份由2位數變成單位數。(08 > 8 )
4. 鬧鈴完全不跟著動,甚至失蹤。

浏览附件14503

代碼如下:
//各類顯示窗 定位

JavaScript:
let lock_X = 39, lock_Y = 20;
let disturb_X = 58, disturb_Y = 20;
let bluetooth_X = 77, bluetooth_Y = 20;
let batlogo_X = 96, batlogo_Y = 20;
let batlevel_X = 115, batlevel_Y = 20;
let week_X = 8, week_Y = 120;
let ampm_X = 56, ampm_Y = 120;
let month_X = 104, month_Y = 120;
let day_X = 148, day_Y = 120;
let hour_X = 8, hour_Y = 150;
let minute_X = 102, minute_Y = 150;
let alarmlogo_X = 10, alarmlogo_Y = 220;
let alarm_X = 26, alarm_Y = 220;
let second_X = 150, second_Y = 220;
let step_X = 25, step_Y = 405;
let heart_X = 55, heart_Y = 445;

var Win_Y = 120, offset_Y = 0;  //y: 120
let Now_Y = Win_Y + offset_Y;

-------------------

//參數內容 例子1
let hhmmss = {  //時分秒參數
            hour_zero: true,
            hour_startX: hour_X,
            hour_startY: hour_Y + offset_Y, //  時-Y軸
            hour_array: n,
            hour_space: 0,  //7
            // hour_align: hmUI.align.CENTER_H,
            hour_align: hmUI.align.RIGHT,
            minute_zero: true,
            minute_startX: minute_X,
            minute_startY: minute_Y + offset_Y,        //分-Y軸
            minute_array: n,
            minute_space: 0, //7
            minute_align: hmUI.align.LEFT,
            am_x: ampm_X,  //上下午
            am_y: ampm_Y + offset_Y,            //上午-Y軸
            am_sc_path: "images/ampm/amsc.png",
            am_tc_path: "images/ampm/amsc.png",
            am_en_path: "images/ampm/am.png",
            pm_x: ampm_X,  //上下午
            pm_y: ampm_Y + offset_Y,            //下午-Y軸
            pm_sc_path: "images/ampm/pmsc.png",
            pm_tc_path: "images/ampm/pmsc.png",
            pm_en_path: "images/ampm/pm.png",
            show_level: hmUI.show_level.ONLY_NORMAL,
            second_zero: true,
            second_startX: second_X,
            second_startY: second_Y + offset_Y,        //秒-Y軸
            second_array: s,
            second_space: 0,
            second_align: hmUI.align.LEFT
          };

-------------------

//Widget創建
            let hhmmssWidget = meTime.createWidget(hmUI.widget.IMG_TIME, hhmmss);  //時分秒
            let ddddWidget = meTime.createWidget(hmUI.widget.IMG_WEEK, dddd);        //周
            let ddWidget = meTime.createWidget(hmUI.widget.IMG_DATE, dd);        //月日
            let batlogoWidget = meTime.createWidget(hmUI.widget.IMG_LEVEL, batlogo);    //電量圖
            let batlevelWidget = meTime.createWidget(hmUI.widget.TEXT_IMG, batlevel);    //電量
            let cWidget = meTime.createWidget(hmUI.widget.IMG_STATUS, c);        //鎖屏
            let btWidget = meTime.createWidget(hmUI.widget.IMG_STATUS, bt);        //藍芽
            let IWidget = meTime.createWidget(hmUI.widget.IMG_STATUS, I);        //勿擾
            let bsWidget = meTime.createWidget(hmUI.widget.TEXT_IMG, bs);        //步數
            let xlWidget = meTime.createWidget(hmUI.widget.TEXT_IMG, xl);        //心率


-------------------

//視窗偏移按鈕
let WinUp_X = 8, WinUp_Y = 95, WinUp_W = 80, WinUp_H = 50;
let WinDown_X = 8, WinDown_Y = 220, WinDown_W = 64, WinDown_H = 50;
 
 
            let WinUp = meTime.createWidget(hmUI.widget.TEXT, { //入口 視窗上移
              x: WinUp_X,
              y: WinUp_Y,
              w: WinUp_W,
              h: WinUp_H,
              //text: '視窗上移',
              show_level: hmUI.show_level.ONLY_NORMAL
 
            });
            let WinDown = meTime.createWidget(hmUI.widget.TEXT, { //入口 視窗下移
              x: WinDown_X,
              y: WinDown_Y,
              w: WinDown_W,
              h: WinDown_H,
              //text: '視窗下移',
              show_level: hmUI.show_level.ONLY_NORMAL
            });
   
// 視窗调节监听

// Now_Y 為主要插件的Y軸頂點,用來防止視窗上移過高或下移過低。預設視窗不高於20,不低於300。之後再調整下。
//每次點擊,offset_Y 增加/減少 10
 WinUp.addEventListener(hmUI.event.CLICK_UP, function (info) {
              if (Now_Y < 20 ) {
                offset_Y = offset_Y - 0;
              } else {
                offset_Y = offset_Y - 10;
              }
              updateWin();
            });
            WinDown.addEventListener(hmUI.event.CLICK_UP, function (info) {
              if (Now_Y > 300 ) {
                offset_Y = offset_Y - 0;
              } else {
                offset_Y = offset_Y + 10;
              };
              updateWin();
            });

//更新視窗屬性
        function updateWin() {
             hhmmssWidget.setProperty(hmUI.prop.MORE, {
                 am_y: ampm_Y + offset_Y,                 //上午y
                 pm_y: ampm_Y + offset_Y,                    //下午y
                 hour_startY: hour_Y + offset_Y,          //時y
                 minute_startY: minute_Y + offset_Y,     //分y
                 second_startY: second_Y + offset_Y     //秒y
             });
             ddWidget.setProperty(hmUI.prop.MORE, {
                 month_startY: month_Y + offset_Y,          //月y
                 day_startY: day_Y + offset_Y             //日y
             });
             ddddWidget.setProperty(hmUI.prop.MORE, { y: week_Y + offset_Y });     //周y
             alarmlogoWidget.setProperty(hmUI.prop.MORE, { y: alarmlogo_Y + offset_Y });    //鬧鈴圖y
             alarmWidget.setProperty(hmUI.prop.MORE, { y: alarm_Y + offset_Y });          //鬧鈴y
 
            Now_Y = Win_Y + offset_Y;
            hmUI.showToast({ text: 'Y軸:' + Now_Y + '\n偏移:' + offset_Y });
        }
 

*这是一则由 Google AdSense 自动推荐的广告,与本站无关,不对其真实性与可靠性负责

Home 首页
Home 资源
News 发现
Account 我的
顶部