进入包含滑动容器“sub_set
tings_swipe_container”的屏幕后,我将根据屏幕从何处获取亮度来执行一些逻辑。通过其他地方的滚轮或通过 CAN 消息手动设置。
- void sub_settings_swipeView::setupScreen()
- {
- sub_settings_swipeViewBase::setupScreen();
- sub_settings_swipe_container.setSelectedPage(navigate_to_screen != 0xff ? navigate_to_screen : 0);
- current_page = sub_settings_swipe_container.getSelectedPage();
- // Global_Settings_2_2
- switch(FFC.brightness_source)
- {
- case can_source:
- can_button.setSelected(true);
- manual_button.setSelected(false);
- sub_settings_swipe_container.add(sub_1_settings_1);
- sub_settings_swipe_container.add(sub_1_settings_2);
- sub_settings_swipe_container.setPageIndicatorXY(98, 212);
- // Global_Settings_2_4
- CAN_brightness_scroll_wheel.animateToItem(ceil((FFC.CAN_Backlight_Adjust*100)-50), 3);
- CAN_brightness_scroll_wheel.invalidate();
- can_found.setVisible(true);
- can_not_found.setVisible(false);
- can_found.invalidate();
- can_not_found.invalidate();
- break;
- case manual_source:
- can_button.setSelected(false);
- manual_button.setSelected(true);
- sub_settings_swipe_container.remove(sub_1_settings_1);
- sub_settings_swipe_container.remove(sub_1_settings_2);
- sub_settings_swipe_container.setPageIndicatorXY(113, 212);
- break;
- }
- can_button.invalidate();
- manual_button.invalidate();
- sub_settings_swipe_container.invalidate();
- }
进入此屏幕后...我查看保存到内存中的内容,FFC.brightness_source 上的 switch/case 语句,并相应地填充屏幕。问题是,当我进入此屏幕并将源设置为 can_source 时,代码在我去添加 (sub_1_settings_1) 的步骤中停止。
但是,如果亮度源设置为手动,它会很好地移除这些屏幕,然后我可以使用 can_button/manual_button 单选按钮打开/关闭它们。这是在 handleTickEvent() 中处理的
- void sub_settings_swipeView::handleTickEvent()
- {
- previous_page = current_page;
- current_page = sub_settings_swipe_container.getSelectedPage();
- switch(current_page)
- {
- case sub_1_settings_page_0:
- previous_brightness_source = brightness_source;
- if(can_button.getSelected())
- brightness_source = can_source;
- else
- brightness_source = manual_source;
- if(brightness_source != previous_brightness_source)
- {
- switch(brightness_source)
- {
- case can_source:
- sub_settings_swipe_container.add(sub_1_settings_1);
- sub_settings_swipe_container.add(sub_1_settings_2);
- sub_settings_swipe_container.setPageIndicatorXY(98, 212);
- break;
- case manual_source:
- sub_settings_swipe_container.remove(sub_1_settings_1);
- sub_settings_swipe_container.remove(sub_1_settings_2);
- sub_settings_swipe_container.setPageIndicatorXY(113, 212);
- break;
- }
- sub_settings_swipe_container.invalidate();
- }
- break;
重申一下,添加/删除屏幕在 handleTickEvent() 中起作用,但添加屏幕在 setupScreen 函数中消失。有什么提示或建议吗?