Bipes项目二次开发/设置功能-1(五)
设置功能,这一期改动有点多,可能后期也会继续出设置功能-n文章,这一期是编程模式,那做目的有两个: 1,代码设计 现在确定做的模式有三种,硬件编程,离线编程,海龟编程三种。每种模式所涉及的代码不同,所以得划分出来。
2,可配置性 后期可能会出一些定制开发,界面就可以通过配置,进行界面调整。
编程模式
html
页面初始内容
cpp
<div class="settings-preview">
<div id="settings-modal">
<h3>设置</h3>
<div class="settings-group">
<label>模式选择</label>
<div class="radio-group">
<div class="radio-option">
<input type="radio" id="mode-hardware" name="programMode" value="hardware" checked>
<span>硬件编程</span>
</div>
<div class="radio-option">
<input type="radio" id="mode-offline" name="programMode" value="offline">
<span>离线编程</span>
</div>
<div class="radio-option">
<input type="radio" id="mode-turtle" name="programMode" value="turtle">
<span>海龟编程</span>
</div>
</div>
</div>
<div class="modal-actions">
<button id="cancel-settings" class="btn btn-secondary">取消</button>
<button id="save-settings" class="btn btn-primary">保存</button>
</div>
</div>
</div>
js
cpp
import Common from "./common";
export default class SettingPreview extends Common {
constructor() {
super()
this.state = false // 设置弹窗是否显示
}
initEvent() {
$('#settingsButton').on('click', () => {
this.changeSetting(!this.state)
})
// 添加取消按钮事件监听
$('#cancel-settings').on('click', () => {
this.changeSetting(false)
})
// 添加确认按钮事件监听
$('#save-settings').on('click', this.saveSettings.bind(this))
}
changeSetting(state) {
let status = state ? 'on' : 'off'
$('.settings-preview').css('visibility', (state ? 'visible' : 'hidden'))
$('#settingsButton').css('background', `url(../media/new-icon/setting-${status}.png) center / cover`)
if (state) {
// 显示时可以加载已保存的设置
this.loadSettings();
}
this.state = state
}
// 保存设置到本地缓存
saveSettings() {
// 获取选中的模式
let selectedMode = 'hardware'; // 默认值
const selectedRadio = $('input[name="programMode"]:checked');
if (selectedRadio.length > 0) {
selectedMode = selectedRadio.val();
}
// 创建设置对象并保存到本地缓存
const settings = {
mode: selectedMode
};
try {
localStorage.setItem('settings', JSON.stringify(settings));
console.log('设置已保存:', settings);
} catch (error) {
console.error('保存设置失败:', error);
}
this.changeSetting(false)
}
// 从本地缓存加载设置
loadSettings() {
try {
const savedSettings = localStorage.getItem('settings');
if (savedSettings) {
const settings = JSON.parse(savedSettings);
if (settings.mode) {
// 设置选中的单选按钮
$(`input[name="programMode"][value="${settings.mode}"]`).prop('checked', true);
}
}
} catch (error) {
console.error('加载设置失败:', error);
}
}
}
界面效果

总结
出这一期主要针对编程模式,不同模式下做不同功能。 硬件编程:保留原有功能,通过连接板子,与板子通信,在板子上运行编写好的代码,做出不同效果 离线编程:学习,了解编程 海龟编程:学习,了解编程,让编程变得不枯燥。