当前位置: 首页 > article >正文

独立开发一个存钱罐App,我用SpriteKit做了个硬币掉落动画,身边朋友最喜欢的就是这个

起因记账App太多存钱App太少去年年底我想找一个纯粹帮我攒钱的工具。注意不是记账是攒钱——我想设一个目标比如攒2万块去日本玩然后每次往里扔点钱看着进度条一点点涨上去。找了一圈发现要么是记账工具顺带有个储蓄目标功能藏得很深要么就是理财平台包装的导流入口。我就想要一个简单的东西设目标、存钱、看进度、有点成就感。没找到那就自己写一个。这就是「聚沙攒钱」的由来。两个核心模式想了挺久一开始我只做了愿望模式对应代码里的wishmode——设一个金额目标比如买AirPods Max要4399然后每次手动记一笔存入。很直觉零门槛。但做着做着我发现一个问题很多人包括我自己存钱坚持不下去不是因为没钱是因为没有节奏感。今天存500明天忘了后天又存200乱七八糟的。所以我加了聚沙模式对应代码里的freemode自由定投的意思。你设定每周存300App帮你算出多少周能到目标还有个简单的复利计算器。核心不是算得多精确是给你一个固定节奏——每周到了那天该存钱了。策略字段支持weekly、biweekly、monthly三种频率。这两个模式我纠结了大概两周试过合并成一个、试过加更多模式最后发现就这两个最清晰。短期愿望用 wish长期积累用 free。硬币掉落动画花时间最多的功能说实话整个App里花时间最多的不是数据层是那个存钱时硬币哗哗掉下来的动画。我用 SpriteKit 做了物理引擎驱动的硬币掉落效果。每次点存入屏幕上掉下来一堆金币带碰撞、带弹跳落到罐子里。核心场景配置大概长这样// 硬币掉落场景的关键配置funcspawnCoins(foramount:Double){letcountmin(Int(amount/10)3,60)// 存10块掉3枚500块掉一大堆上限60physicsWorld.gravityCGVector(dx:0,dy:-4.8)foriin0..count{letcoinSKSpriteNode(imageNamed:coin_gold)coin.sizeCGSize(width:28,height:28)coin.positionCGPoint(x:CGFloat.random(in:frame.midX-80...frame.midX80),y:frame.maxYCGFloat(i*12)// 错开高度不要一坨砸下来)coin.physicsBodySKPhysicsBody(circleOfRadius:14)coin.physicsBody?.restitution0.35// 弹性系数调了很多次coin.physicsBody?.friction0.3coin.physicsBody?.linearDamping0.1addChild(coin)}} restitution弹性系数这个参数调了很多次。0.6的时候硬币会弹得到处飞像弹力球一样0.1又完全没弹跳感像泥巴糊上去的。最后定在0.35看起来有真实感又不会飞出屏幕。 听起来是个花哨的小功能对吧但我发现这东西对坚持存钱的影响比我想象的大。存钱本身是个反人性的动作——你在限制当下的消费。如果存完了只是一个数字从1800变成2100那感觉跟在Excel里改个数没区别。但硬币哗啦啦掉下来配上触觉反馈UIImpactFeedbackGenerator那一瞬间是有获得感的。 我女朋友用了之后说存钱的时候听那个声音特别爽后来给几个同事装了反馈也差不多——功能层面大家觉得还行但提到最多的就是这个硬币动画。游戏设计里叫juice我只是把它搬到了一个理财工具里。 ## 成就徽章系统用游戏化对抗懒惰 另一个我觉得做对了的设计是徽章系统。每个徽章的解锁条件是一个闭包接收用户的统计摘要返回布尔值 swiftBadgeDefinition(id:streak_7,name:Week Streak,description:Deposit 7 days in a row,category:streak){$0.currentStreak7},BadgeDefinition(id:night_owl,name:Night Owl,description:Deposit 10 times at night,category:special){$0.nightDeposits10},BadgeDefinition(id:early_bird,name:Early Bird,description:Deposit 10 times early morning,category:special){$0.earlyDeposits10} 目前一共13枚徽章覆盖存款里程碑、连续打卡、目标数量、特殊时段这几类。13枚不算多但人真的会为了解锁某个徽章刻意去凑条件。我女朋友专门设了个闹钟早上6点存10块钱就为了攒Early Bird——连续攒了两周才攒够10次。 这个闭包的设计扩展性不错后来我想加什么新徽章写一个 BadgeDefinition 丢进数组就行不用动任何其他代码。 ## 每日语录324句组合拼接App里有个每日激励语录功能一开始我觉得太鸡汤想砍掉。后来决定自己写用了一个偷懒但效果不错的办法——主语谓语拼接18个主语一杯奶茶的钱、睡前的那一次点击、坚持7天的连续记录……配18个谓语会慢慢变成踏实的安全感、让计划不会停在第一天……按日期做哈希取模18×18324种组合够一年不重复。 这种方式写出来的语录比AI生成的有烟火气得多。而且偶尔会出现意想不到的搭配比如把红包攒起来是最便宜的安心保险——这句我自己都觉得挺好。 ## 数据备份踩的坑JSON体积爆炸 这个App后来我也做了HarmonyOSNEXT版本用ArkTS重写。在做数据备份功能时踩了一个印象深刻的坑。 iOS版用CoreData备份走系统的序列化机制体积控制不太用操心。但鸿蒙版用的是轻量级本地存储导出就是纯JSON。有个测试用例里灌了1200个目标每个关联20笔交易导出的JSON直接撑到几十MB在部分设备上解析卡死。 后来我加了8MB的硬上限MAX_BACKUP_TEXT_LENGTH8_000_000超过的时候按目标维度分片——每个分片包含一批目标及其关联的交易记录保证单个目标的数据完整性不被拆断。每个分片有自己的 schemaVersion 和 partIndex恢复时按 partIndex 顺序合并合并完做一次目标ID去重校验防止重复导入。 说实话这个方案不算优雅但对于一个本地工具来说够用了。真有用户攒到1200个目标……那他可能需要的不是存钱App而是心理咨询。 ## 目前的状态 聚沙攒钱 iOS 版目前1.8版本鸿蒙版也在华为应用市场上了。下载量说实话不大还在慢慢推。没做任何付费功能的硬推Pro版本只是解锁更多徽章和主题色基础功能全免费。 回头看做得最对的一件事是坚持把硬币动画做出来。很多时候我们做工具类App会觉得功能全了就行动画是锦上添花。但对于一个帮人养成习惯的产品那个花可能比锦重要。 ## 技术栈-iOS版SwiftUISpriteKit物理动画CoreDataAppIntents--HarmonyOS版ArkUIArkTSHvigor构建--纯本地存储用户数据不出设备 对了鸿蒙版我一直没找到好的方案来做类似SpriteKit那种物理动画效果ArkUI的动画能力和原生物理引擎之间差距还是挺大的。如果有做鸿蒙开发的朋友在这块有经验评论区聊聊 ## 相关链接-AppStore搜索「聚沙攒钱」ID:6758853486--华为应用市场搜索「聚沙攒钱」

相关文章:

独立开发一个存钱罐App,我用SpriteKit做了个硬币掉落动画,身边朋友最喜欢的就是这个

起因:记账App太多,存钱App太少 去年年底我想找一个纯粹帮我"攒钱"的工具。注意,不是记账,是攒钱——我想设一个目标,比如攒2万块去日本玩,然后每次往里扔点钱,看着进度条一点点涨上去…...

4GB显存也能流畅运行SDXL?揭秘Fooocus低配置AI绘图优化方案

4GB显存也能流畅运行SDXL?揭秘Fooocus低配置AI绘图优化方案 【免费下载链接】Fooocus Focus on prompting and generating 项目地址: https://gitcode.com/GitHub_Trending/fo/Fooocus 还在为高配置需求而放弃AI绘图梦想吗?Fooocus带来了革命性的…...

2025届毕业生推荐的六大AI科研工具实际效果

Ai论文网站排名(开题报告、文献综述、降aigc率、降重综合对比) TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek 于内容创作范畴里,降低AIGC率有着重大意义,这表明得尽量削减算法生成…...

为什么92%的MCP 2026审计报告被监管驳回?——4大元数据缺失陷阱与ISO/IEC 27001:2022对齐方案

更多请点击: https://intelliparadigm.com 第一章:MCP 2026权限审计报告的监管驳回现状与根本动因 近期,多家金融机构提交的MCP 2026权限审计报告连续遭遇监管机构驳回,驳回率高达68.3%(据2024年Q2银保监科技合规通报…...

HaShiFlex架构:深度神经网络加速器的硬件革新

1. 深度神经网络加速器的硬件革命在移动设备和物联网终端爆炸式增长的今天,边缘计算对高效能神经网络推理的需求达到了前所未有的高度。传统GPU方案虽然灵活,但其功耗和延迟难以满足实时性要求严苛的场景。这催生了一个关键问题:如何在保持一…...

2026届毕业生推荐的五大AI学术神器推荐榜单

Ai论文网站排名(开题报告、文献综述、降aigc率、降重综合对比) TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek 在人工智能辅助写作的场景里,“降AI指令”是这种提示方法,它被用来降…...

如何免费激活Windows和Office:KMS智能激活工具终极指南

如何免费激活Windows和Office:KMS智能激活工具终极指南 【免费下载链接】KMS_VL_ALL_AIO Smart Activation Script 项目地址: https://gitcode.com/gh_mirrors/km/KMS_VL_ALL_AIO 还在为Windows系统频繁弹出激活提示而烦恼吗?Office文档突然变成只…...

Cursor Pro破解终极指南:3步实现永久免费使用AI编程助手

Cursor Pro破解终极指南:3步实现永久免费使用AI编程助手 【免费下载链接】cursor-free-vip [Support 0.45](Multi Language 多语言)自动注册 Cursor Ai ,自动重置机器ID , 免费升级使用Pro 功能: Youve reached your t…...

内核代码学习

核心层: kernel, IPC MM FS NET架构层: arch include,通用头文件驱动与工具: drivers,char、block、usb、i2cuart辅助 Documentation lib samples init scripts定位内核入口 init/main.c/start_kernel()chi…...

基于Python与Telegram Bot构建丝滑AI对话机器人:架构设计与工程实践

1. 项目概述:打造一个丝滑的AI对话机器人 最近在折腾一个挺有意思的东西,一个基于Telegram平台的ChatGPT机器人。简单来说,就是让你能在Telegram这个全球流行的即时通讯软件里,像跟朋友聊天一样,直接和AI对话、画图&a…...

AgentEvolver:让大模型智能体具备自我进化能力的框架解析与实践

1. 项目概述:当模型学会“进化”,智能体开发进入新纪元 最近在探索大模型应用落地的过程中,我一直在思考一个问题:我们费尽心思设计的智能体(Agent),其能力边界是不是在创建之初就被锁死了&…...

避开STC15单片机PCA/PWM的那些坑:时钟源选择与占空比精度详解

STC15单片机PCA/PWM实战避坑指南:从时钟源配置到占空比优化的完整解决方案 第一次接触STC15W408AS的PCA/PWM功能时,我对着官方手册配置了半天,示波器上却始终看不到预期波形。直到深夜才发现问题出在时钟源选择上——这个看似简单的配置项&am…...

软件隐私性的数据保护与合规遵循

在数字化时代,软件隐私性的数据保护与合规遵循已成为企业和用户共同关注的核心议题。随着数据泄露事件频发和全球隐私法规的不断完善,如何确保软件在收集、存储和处理用户数据时既安全又合规,成为开发者与运营者的重要挑战。本文将从数据加密…...

2026年第十七届蓝桥杯网络安全赛项WriteUp

解题情况比赛还剩一小时左右时截图题型:情报收集题目名:map_tracer查看js源码得到信息,访问/app.js可以得到app.js.map文件用记事本打开,可以得到关键信息接口:/api/trace/internal/list签名值:trace_dev_2…...

认知战分析MCP服务器:数学模型驱动的信息对抗与叙事操控检测

1. 认知战与心理战分析:一个面向AI代理的MCP服务器深度解析在信息过载的时代,识别、分析和应对有组织的叙事操控,正成为从国家安全到企业品牌管理的核心挑战。传统的社会聆听工具只能告诉你“有多少人在讨论”,却无法回答“这是否…...

开源网盘直链解析技术方案:八大平台高效下载实现原理

开源网盘直链解析技术方案:八大平台高效下载实现原理 【免费下载链接】Online-disk-direct-link-download-assistant 一个基于 JavaScript 的网盘文件下载地址获取工具。基于【网盘直链下载助手】修改 ,支持 百度网盘 / 阿里云盘 / 中国移动云盘 / 天翼云…...

八大网盘直链解析工具:告别限速,轻松获取真实下载地址

八大网盘直链解析工具:告别限速,轻松获取真实下载地址 【免费下载链接】Online-disk-direct-link-download-assistant 一个基于 JavaScript 的网盘文件下载地址获取工具。基于【网盘直链下载助手】修改 ,支持 百度网盘 / 阿里云盘 / 中国移动…...

【Docker WASM边缘部署终极指南】:20年架构师亲授5大避坑法则与3个生产级优化技巧

更多请点击: https://intelliparadigm.com 第一章:Docker WASM边缘部署的核心价值与适用边界 为什么WASM正在重塑边缘容器范式 WebAssembly(WASM)以其沙箱安全、跨平台二进制可移植性及毫秒级冷启动能力,成为Docker在…...

动态加载JavaScript小部件的正确姿势

在现代网页开发中,动态加载JavaScript小部件是非常常见的需求,特别是在需要根据用户行为或URL参数来定制小部件内容时。今天我们来探讨一下如何正确地实现这一点。 背景介绍 假设我们有一个小部件,它可以通过特定的参数(如clientI…...

5分钟掌握Nintendo Switch游戏转储神器:NxDumpTool完整指南

5分钟掌握Nintendo Switch游戏转储神器:NxDumpTool完整指南 【免费下载链接】nxdumptool Generates XCI/NSP/HFS0/ExeFS/RomFS/Certificate/Ticket dumps from Nintendo Switch gamecards and installed SD/eMMC titles. 项目地址: https://gitcode.com/gh_mirror…...

Hotkey Detective:如何3分钟精准定位Windows热键冲突的终极指南

Hotkey Detective:如何3分钟精准定位Windows热键冲突的终极指南 【免费下载链接】hotkey-detective A small program for investigating stolen key combinations under Windows 7 and later. 项目地址: https://gitcode.com/gh_mirrors/ho/hotkey-detective …...

TFT Overlay:3分钟快速上手的终极云顶之弈智能决策辅助工具完全指南

TFT Overlay:3分钟快速上手的终极云顶之弈智能决策辅助工具完全指南 【免费下载链接】TFT-Overlay Overlay for Teamfight Tactics 项目地址: https://gitcode.com/gh_mirrors/tf/TFT-Overlay 你是否在玩《英雄联盟:云顶之弈》时经常手忙脚乱&…...

在Windows上安装Android应用:APK-Installer让跨平台应用管理变得简单

在Windows上安装Android应用:APK-Installer让跨平台应用管理变得简单 【免费下载链接】APK-Installer An Android Application Installer for Windows 项目地址: https://gitcode.com/GitHub_Trending/ap/APK-Installer 你是否曾经想过在Windows电脑上直接运…...

ArchivePasswordTestTool:基于7zip引擎的高效压缩包密码自动化测试工具

ArchivePasswordTestTool:基于7zip引擎的高效压缩包密码自动化测试工具 【免费下载链接】ArchivePasswordTestTool 利用7zip测试压缩包的功能 对加密压缩包进行自动化测试密码 项目地址: https://gitcode.com/gh_mirrors/ar/ArchivePasswordTestTool 在数字资…...

Java+AI<初学者入门>

今天是我学习Java的第一天,因为我之前学过一段时间的C语言,所以看到视频教程里教学内容是输出hello world,我想起了我刚学c的时候有些怅然,我还是闲话少说,看一下我的学习成果吧。今天首先我先下载了Java25和Java idea…...

通达信缠论可视化分析插件:5分钟掌握专业级量化分析技术

通达信缠论可视化分析插件:5分钟掌握专业级量化分析技术 【免费下载链接】Indicator 通达信缠论可视化分析插件 项目地址: https://gitcode.com/gh_mirrors/ind/Indicator 还在为复杂的缠论分析而困扰吗?想要快速识别市场中枢结构却无从下手&…...

告别ImageNet预训练:用DINO-v2自监督ViT,在自定义数据集上也能训出好模型

突破数据瓶颈:DINO-v2自监督ViT在垂直领域的实战指南 当医学影像分析遇到标注数据不足,当工业质检缺乏足够样本,传统依赖ImageNet预训练的方法往往捉襟见肘。DINO-v2的出现,为这些垂直领域带来了新的曙光——无需海量标注数据&…...

别再折腾了!手把手教你用USB-RNDIS给FM350-GL模块手动配IP上网(附串口指令大全)

FM350-GL模块USB-RNDIS网络配置全解析:从原理到实战 当你把FM350-GL模块通过USB-RNDIS连接到Windows电脑,看到网络适配器显示"已连接"却无法上网时,那种挫败感我深有体会。这不是简单的驱动问题,而是隐藏在自动配置背后…...

滚动增长:在亚马逊,如何用“分步击破”的耐心策略建立品牌帝国

拥有充足资金,能在亚马逊全球所有站点、所有品类全面发力推广新品的公司寥寥无几。但这恰恰是绝大多数卖家的常态。因此,明智的策略不是盲目追求全面开花,而是像历史上的成功品牌一样,耐心地找到一个可守的“滩头阵地”&#xff0…...

深度拆解大模型Agent规划能力,从原理到落地全面升级智能体长程执行效果

在人工智能技术飞速迭代的当下,大语言模型驱动的智能Agent已经成为行业落地的核心方向,无论是办公自动化,复杂工具调用,多步骤业务处理还是代码工程落地,Agent都在逐步替代重复性人工操作,成为降本增效的关…...