发布时间:2026/8/26 16:19:12
OUC26夏移动软件开发-实验1 OUC26夏移动软件开发-实验1姓名马一诺 学号项目内容姓名和学号马一诺本实验属于哪门课程中国海洋大学26夏《移动软件开发》实验名称实验1热身运动GitHub源码链接https://github.com/1-qaz-2-wsx/ouc26-mobile-dev/tree/main/lab1博客链接https://blog.csdn.net/2604_96828618/article/details/164025493?spm1011.2415.3001.10575sharefrommp_manage_link一、实验内容1. 安装微信开发者工具首先访问微信开发者工具官方下载页面根据计算机的操作系统下载稳定版安装包并完成安装。微信开发者工具提供了代码编辑、编译预览、模拟器和调试器等功能是本实验开发和测试小程序的主要工具。2. 创建第一个微信小程序项目在本地创建空白项目目录并在微信开发者工具中选择“小程序”项目类型填写项目名称和目录后完成创建。本实验最终代码保存在lab1/code1文件夹中。3. 设计“or”切换小程序本实验在基础 Hello World 案例上进行扩展制作一个可以循环切换小动物图片和问候文字的小程序。初始页面显示hello dog和腊肠犬图片点击not me按钮后按以下顺序切换hello orange cat和橘猫图片hello black cat和黑猫图片hello white cat和白猫图片再次回到hello dog和腊肠犬图片。四张图片分别保存在code1/img文件夹中img/ ├── sausage-hotdog.jpg ├── orange-cat.jpg ├── black-cat.jpg └── white-cat.jpg3.1 页面导航和整体结构页面使用项目自带的navigation-bar组件设置顶部导航并使用scroll-view作为可滚动的主体区域navigation-bar titleor back{{false}} color#4a3828 background#fff8ea /navigation-bar scroll-view classscrollarea scroll-y enhanced show-scrollbar{{false}} view classpage-container !-- 页面内容 -- /view /scroll-viewtitle设置导航栏标题back{{false}}表示当前页面是首页不显示返回按钮。scroll-y允许页面纵向滚动避免内容在小屏幕设备中显示不完整show-scrollbar{{false}}隐藏滚动条使页面更加简洁。3.2 使用数据绑定显示当前宠物在index.js的data中建立pets数组每个元素同时保存问候文字、图片路径和对应表情。这样可以保证切换时文字和图片始终一一对应。data:{pets:[{wording:hello dog,image:/img/sausage-hotdog.jpg,emoji:},{wording:hello orange cat,image:/img/orange-cat.jpg,emoji:},{wording:hello black cat,image:/img/black-cat.jpg,emoji:‍⬛},{wording:hello white cat,image:/img/white-cat.jpg,emoji:}],currentIndex:0,currentPet:{wording:hello dog,image:/img/sausage-hotdog.jpg,emoji:}}currentIndex保存当前宠物在数组中的下标初始值为0所以程序第一次打开时显示数组中的腊肠犬。currentPet保存当前需要展示的完整宠物对象。WXML 使用双大括号进行数据绑定view classgreeting-row text classpet-emoji{{currentPet.emoji}}/text text classtitle{{currentPet.wording}}/text /view image classpet-image modeaspectFill src{{currentPet.image}} /image当currentPet发生变化时页面中的表情、问候文字和图片会自动更新。modeaspectFill让图片在保持原始比例的同时铺满固定大小的图片区域多余部分自动裁剪3.3 实现按钮点击和循环切换按钮使用bindtap将点击事件绑定到changePet函数button classchange-button bindtapchangePet hover-classbutton-hover not me /button其中bindtapchangePet表示点击按钮时执行 JavaScript 中的同名函数hover-class用于设置按钮按下时的视觉反馈。循环切换逻辑如下changePet(){constnextIndex(this.data.currentIndex1)%this.data.pets.lengththis.setData({currentIndex:nextIndex,currentPet:this.data.pets[nextIndex]})}每次点击后当前下标加1再对数组长度取模。this.setData()用来修改页面数据并通知小程序重新渲染相关 WXML 内容。不能只直接修改this.data否则界面不会可靠地同步更新。3.4 使用列表渲染制作状态指示点图片下方设置四个状态指示点用来提示当前处于第几张图片view classindicator-list view wx:for{{pets}} wx:keywording classindicator {{index currentIndex ? indicator-active : }} /view /viewwx:for{{pets}}会根据宠物数组循环创建四个view。系统自动提供的index表示当前循环下标当它等于currentIndex时元素会额外获得indicator-active样式使当前指示点变长并改变颜色。.indicator { width: 13rpx; height: 13rpx; margin: 0 8rpx; border-radius: 50%; background: #dccbb8; } .indicator-active { width: 36rpx; border-radius: 8rpx; background: #d48852; }3.5 背景和宠物卡片设计页面整体使用米白、浅橙和棕色组成的暖色风格与猫狗图片的轻松主题保持一致。背景由两个径向渐变和一个线性渐变叠加而成.scrollarea { flex: 1; overflow-y: auto; background: radial-gradient(circle at 12% 18%, rgba(255, 197, 92, 0.24) 0, rgba(255, 197, 92, 0.24) 90rpx, transparent 92rpx), radial-gradient(circle at 88% 82%, rgba(133, 196, 157, 0.20) 0, rgba(133, 196, 157, 0.20) 130rpx, transparent 132rpx), linear-gradient(160deg, #fff8ea 0%, #f9edda 100%); }主体内容放在半透明白色卡片中并通过圆角、边框和阴影增强层次.pet-card { width: 100%; padding: 42rpx 34rpx 38rpx; border: 2rpx solid rgba(151, 112, 75, 0.12); border-radius: 38rpx; background: rgba(255, 255, 255, 0.88); box-shadow: 0 22rpx 55rpx rgba(106, 77, 48, 0.16); }按钮采用胶囊形圆角和橙色渐变并设置阴影与按压反馈.change-button { width: 72%; border: none; border-radius: 999rpx; background: linear-gradient(135deg, #e49a63, #cb704b); color: #ffffff; box-shadow: 0 10rpx 24rpx rgba(198, 105, 69, 0.28); } .button-hover { opacity: 0.82; transform: scale(0.98); }页面尺寸主要使用微信小程序提供的rpx单位。屏幕宽度会被换算为750rpx所以图片、间距、文字和圆角可以根据不同设备宽度自动缩放。4. 最终运行效果二、问题总结与体会1. 实验中遇到的问题及解决方法1不同图片尺寸导致页面布局变化。四张图片的宽高比例并不完全一致如果使用widthFix切换图片时展示区域高度会发生改变。解决方法是在.image-frame中设置统一的宽高再给图片设置width: 100%、height: 100%和modeaspectFill。这样图片会保持比例并填满容器切换时页面结构更加稳定。2两个状态的三元运算无法满足四个状态循环。基础案例可以通过三元表达式在girl和boy之间切换但本实验需要依次展示四组文字和图片。使用对象数组统一保存每只宠物的数据通过“下标加一后对数组长度取模”的方式完成循环。3顶部区域可能被状态栏遮挡。使用自定义navigation-bar组件处理系统状态栏和胶囊按钮区域页面主体放在导航栏下方的滚动容器中相比直接添加固定顶部内边距更适合不同设备。2. 实验收获与体会通过本次实验我熟悉了微信小程序的基本流程理解了 WXML、WXSS、JavaScript 和 JSON 配置文件之间的分工。WXML 负责页面结构和数据绑定WXSS 负责外观及移动端布局JavaScript 负责数据与交互逻辑JSON 负责页面配置和组件注册。

相关新闻

2026/8/26 16:19:12

界面控件DevExpress WinForms中文帮助文档 - 入门指南

DevExpress WinForms控件包含了190多个Windows Forms控件和UI库,能帮助开发者提供为Windows Forms平台创建具有强大影响力的软件解决方案所需的组件,最新版本支持.NET 10。 在本系列文章中,我将为大家整理DevExpress WinForms的中文帮助文档…

2026/8/26 16:19:12

Linux之线程池(一)

日志日志与策略模式一、什么是设计模式软件开发里,很多场景都是重复遇到的经典问题。前辈工程师针对这些高频场景,总结出一套通用、成熟、可复用的解决方案,这套方案就叫做设计模式。简单理解:写代码的 “模板套路”,目…

2026/8/26 16:19:12

SAP UI5 里有没有类似 RxJS map Operator 的机制

在一个典型的 SAP UI5 项目里,我们很容易遇到这样一段代码。后台通过 OData 返回销售订单,前端拿到一批订单以后,需要把原始字段转换成更适合页面消费的结构,例如把金额字符串转换成数字,把技术状态转换成业务状态,把几个字段组合成显示文本。熟悉 RxJS 的开发者看到这里…

2026/8/26 17:15:08

DV、OV、EV的核心差异是什么:验证身份,不是简单的加密强弱

DV、OV、EV经常被误说成低、中、高三档加密。这样的说法会让企业把注意力放错位置。三者的核心差别是证书申请时对主体信息的验证程度,而不是把HTTPS传输加密简单划为弱、中、强。网站应根据自身业务、采购要求和身份展示需要选择,而不是因为“更贵”就默…

2026/8/26 17:15:08

ESP32 C3开发实战 -6(BLE组件-2)

基于ESP32 C3开发物联网设备,通常使用基于BLE低功耗蓝牙,而非经典蓝牙。BLE协议定义了3层软件结构:应用层(Application Layer)主机层(Host Layer)控制层(Controller Layer&#xff0…

2026/8/26 17:15:08

网络信息安全系列: 欧盟网络弹性法案CRA深度解析与合规指南

潜在案列:一家智能门锁制造商收到欧盟大客户邮件——“2027年12月后,无CRA合规证明的产品将不再纳入采购清单”。研发总监连夜翻查法条,发现产品里还躺着admin/123456的默认密码,调试用的UART接口裸露在生产固件中,连S…

2026/8/26 17:15:08

最小距离分类器例题——马氏距离

【例 1】 广东省湛江市地处亚热带,三面临海,对虾养殖环境优越,拥有最完整的对虾产业链。市民餐桌上的对虾有养殖对虾和海捕对虾两类。但是两类在风味、口感和商业价值上存在一定差异,海捕对虾较养殖对虾鲜味浓,口感也不同,因此海捕对虾的价格也明显高于养殖对虾的价格。…

2026/8/26 17:10:07

04-从仿真到实机:Sim-to-Real 跨域迁移痛点解析与全链路落地指南

Sim-to-Real 全链路:物理引擎、合成数据与领域随机化「具身智能落地实战」系列第 4 篇 前几篇我们拆解了具身机器人的硬件、VLA 大脑和 SLAM 空间认知。但有一个绕不开的难题:机器人算法需要大量数据来训练,而真实世界的数据采集成本极高、速…

2026/8/26 9:13:28

[光学原理与应用-521]:对光的错误理解与纠偏

首先光是一种能量的载体和形态,宏观上观察到的光是由无数个微观的光量子组成的,每个光子在产生的瞬间,其在真空的空间中以确定不变的速度沿着一个初始的方向一直向前,在微观层面,每个光量子的运动轨迹是以波函数所展现…

2026/8/25 11:48:27

SIP通话转接原理与REFER方法实战解析

1. 通话转接不是“挂断再拨号”,而是SIP会话的动态重定向你有没有遇到过这样的场景:客服坐席A正在和客户通电话,突然需要把这通对话无缝转给专家坐席B,客户完全感知不到中间的断连——既没听到忙音,也没被要求重新拨号…

2026/8/25 16:56:43

Kolla-ansible单节点OpenStack部署实战:从环境准备到排坑指南

1. 为什么选择Kolla-ansible来部署单节点OpenStack?如果你正在寻找一种能把OpenStack从“概念”快速变成“可用的实验环境”的方法,那么Kolla-ansible几乎是当前最主流、最省心的选择。我见过太多人卡在手动编译依赖、配置服务、处理版本冲突的泥潭里&am…

2026/8/26 0:04:32

Python random 模块常用函数详解:从入门到实战

目录 1. 引言2. 准备工作3. 基础随机函数4. 序列相关函数5. 随机种子与复现6. 实战案例7. 注意事项8. 常见问题与排查9. 总结 1. 引言 摘要: 本文系统介绍 Python 标准库 random 模块中最常用的随机数生成函数。内容涵盖基础随机函数(random()、unifor…

2026/8/26 1:19:35

JSON总结

JSON概念 JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,主要用于跟服务器进行交换数据。它基于ECMAScript的一个子集。 JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C、C、C#、Java、JavaScr…

2026/8/26 1:19:35

保存连接sse 是什么原理,为什么不会一直请求

“保持连接”用的是 SSE(Server-Sent Events),本质是一个没有马上结束的 HTTP 请求。 过程是: 拷贝机发送一次请求: GET /api/code-sync/events服务器返回: Content-Type: text/event-stream但不关闭响应&…

2026/8/24 13:42:17

实测才敢推 AI论文网站 2026最新测评与推荐

2026年真正好用的AI论文网站,核心看生成的论文质量、低AI味、格式正确、学术适配四大指标。综合实测,千笔AI、ThouPen、豆包、DeepSeek、Grammarly 是当前最值得推荐的梯队,覆盖从免费到付费、从中文到英文、从文科到理工的全场景需求。一、综…

2026/8/24 18:13:48

2026必备!AI论文网站测评:最新推荐与深度对比

2026年真正好用的AI论文网站,核心看生成的论文质量、低AI味、格式正确、学术适配四大指标。综合实测,千笔AI、ThouPen、豆包、DeepSeek、Grammarly 是当前最值得推荐的梯队,覆盖从免费到付费、从中文到英文、从文科到理工的全场景需求。 一、…

2026/8/25 1:08:14

摆脱论文困扰!盘点2026年全网爆红的的AI论文写作工具

一天写完毕业论文在2026年已不再是天方夜谭。2026年最炸裂、实测能大幅提速的AI论文写作工具,覆盖选题构思、文献整理、内容生成、格式排版等核心场景,真正帮你高效搞定论文难题。 一、全流程王者:一站式搞定论文全链路(一天定稿首…