2013年2月22日
Widget 2.0 发布啦!砰!
它来了!我们从头重写了 Corona 的 widget 库,现在可以在 每日构建 1034 中使用。
重要提示: 请参考每个每日构建附带的更新文档。一些内容已更改或已重命名,因此您应仔细研究。为了帮助您,我们还提供了一份迁移指南,该指南也与适用每日构建中的文档捆绑在一起。
(附注:1034 的每日构建 API 文档有点小问题。现在已修复!)
功能和改进
我们做的最重要的事情是决定从头开始,这对于构建一个稳定、坚实的基础至关重要。因此,Widget 2.0 将更容易扩展,也更易于维护。(关于 1.0 代码的弊端以及一个惊喜,稍后会介绍。)
主要的更改之一是集成了图像表单的概念。旧的 widget 库没有完全采用图像表单,因此为了创建主题,您必须拥有大量的单个图像文件。这太混乱了!
有了新的 widget 库,我们完全采用了图像表单。现在,widget 主题使用 imageSheets 构建,以节省纹理内存和磁盘空间。
此外,我们决定发布一个 iOS 主题和一个 Android 主题。这意味着您不再需要将额外的 widget 资源文件复制到您的项目中。我们一直觉得这有点笨拙,尤其是在您意识到 widget 框架在没有这些图像资源的情况下是不完整的。现在,当您为 iOS 构建时,我们会预先烘焙 iOS 图像资源。对于 Android 也是如此。
我们还添加了大量其他功能。以下是一些示例,让您了解我们为此付出了多少心血
- 能够创建 9 切片 widget 按钮。
- 现在可以创建垂直滑块,以及之前的水平滑块。
- 现在可以通过新的 “labelAlign” 属性将 widget 按钮的标签对齐到三个常量之一。
- 大幅改进的 widget 文档。
- 统一了整个 API 命名约定。
- 能够以图形方式设置选项卡栏的主题,(之前仅支持渐变)。
- 内置禁用 widget 按钮接收触摸事件的功能,这对于登录屏幕等非常有用。
- 内置将 widget 按钮插入 scrollView 的功能。
已修复的错误
widget 的代码重新架构使我们能够解决大量错误
- 18143:Corona 文档反馈 - 添加视觉效果,尤其是针对 widget 和 UI 项。
- 18217:widget.newTableView 类别滚动不会随着行滚动到表单顶部。
- 18496:缺少用于开关等的 widget 文档。
- 18503:widget.newProgressView 没有正确的 referencePoint。
- 18505:widget.newProgressView 默认值无法达到或测量。
- 18528:文档中缺少分段控件。
- 18537:widget.newStepper() 参考点不正确。
- 18538:widget.newStepper() 创建后移动的行为异常。
- 18975:scrollView widget 内的 widget.newButton 事件发生故障。
- 19004, 19030:widget.newTableView() – hideBackground 描述不正确。
- 20003:如果 onRelease 方法删除开关,则开/关开关 widget 在双击时失败。
- 20341:widget.newSpinner() imageSheet 文档不正确。
- 20462:widget.newTableView() 文档引用已弃用的 API。
- 20601:widget.newProgressView() 没有文档。
- 16094:widget.tableView:scrollToY / scrollToIndex 等不考虑 topPadding
- 12749:widget.newSlider 在视觉上旋转,但在功能上忽略旋转(我们添加了创建垂直滑块的功能)。
- 19031:按钮 Widget 错误。
- 18720:bottomPadding 在 scrollview widget 上不起作用。
- 20583:ScrollView 中按钮的 onEvent 不触发 “release” 和 “moved” 事件。
- 20468:ScrollView 内的对象中未发生 Moved 事件阶段。
- 18750:模拟器中的 ScrollView 超出范围。
- 15112:widget.newTableView 显示在另一个 widget.newTableView 之上,两者都在获取触摸事件*。
- 15857:TableView 行滚动不流畅/在边界上“抖动”。
- 18457:在新的 CoronaSDK.2012.942 上,TableView 函数 scrollToIndex 出现问题。
- 18778:功能请求:tableview widget 中的滚动事件。
- 19570:widget.tabbar 按钮自动间距添加了不必要的填充。
- 18886:滑块 widget 不返回事件阶段。
从 widget 1.0 迁移
现在,如果您要从 widget 1.0 迁移,您需要注意我们所做的 API 更改。
在最新的每日构建文档中,widget 库索引的顶部有一个迁移指南链接,告诉您如何更新代码以充分利用 widget 2.0。
简而言之,您应该注意以下 API
- widget.newButton()
- widget.newPickerWheel()
- widget.newScrollView()
- widget.newTabBar()
- widget.newTableView()
在迁移指南中,我们向您展示了代码在之前和之后的样子并排示例,以便您的过渡尽可能轻松。
已知问题
当然,没有哪个版本是完美的。以下是我们已经在研究的问题
- TableView 类别目前不会在屏幕上相互推入/推出。
- TableView/ScrollView 缺少滚动条。
- 单选按钮分组。
- 将选项卡栏添加到默认 widget 主题。
- 由于与状态栏高度相关的错误计算,WidgetDemo 在基于 Android 的设备上看起来不太正确。
还有一件事…
我们意识到你们中的一些人可能即将发布产品,或者无法处理各种 widget 2.0 API 更改。因此,我们今天开源了 Widget 1.0 代码!
Corona Widget 1.0 源代码现在可以在 GitHub 上找到。
这使您可以使用旧的 widget 库(即使我们认为您最好使用 Widget 2.0)。只需从 GitHub 下载 “widget-v1.lua” 并将以下行放在每个使用 widget 的 Lua 文件的顶部
local widget = require "widget-v1"
说实话,我们看着 Widget 1.0 代码,感到很尴尬 – 我们甚至讨论过是否应该将此代码发布给您。但是,我认为将此代码交给您非常重要,原因正是我在上面提到的 – 为了最大程度地减少那些试图发布应用程序的人员的中断。
现在,话虽如此,我也必须安抚我们工程团队的自豪感。因此,如果您访问 GitHub,您会在 “Readme” 文件中看到以下免责声明
我们应该警告您,此代码非常像意大利面。它不干净,而且难以维护。对于任何崭露头角的框架编写者来说,这确实是一种反模式。当您阅读此代码时,您应该立即明白为什么我们如此努力地维护旧的 widget 代码,以及为什么我们最终决定重写 widget 库。
正如我昨天提到的那样,我们一直在做很多事情。这只是我们向您发布的众多 “2.0” 项目中的第一个!
IcySpark
发布于 2 月 22 日 18:41内置将 widget 按钮插入 scrollView 的功能。
您是如何处理的,因为我在使其工作时遇到问题,因为按钮不会将焦点释放回 scrollView。
danny
发布于 2 月 22 日 19:17嗨,IcySpark。
您在您的应用程序中使用多点触控吗?
Naomi
发布于 2 月 22 日 19:28谢谢 Walter,提供了有关 widget v2.0 的详细信息。我也很感谢您发布了带有免责声明的 widget v1.0 的链接。由于一个问题(即 v2.0 无法动态设置/更改 widget 按钮的 onRelease 属性),我决定回退到 1030。即使我希望能够尝试对新的每日构建进行的最新更改和修复,但现在我可能会继续使用每日构建 1030。我只希望在我真正需要使用更新的构建时,widget v2.0 能够进行其他修复和更新,这样或许我根本不需要 require widget v1.0。至少我现在知道,如果需要,我可以回退。
再次感谢。
Mike M
发布于 2 月 22 日 22:12像 tableView 这样的 widget 现在是否可以与故事板效果一起使用?
Mike M
发布于 2 月 22 日 22:28还有一件事…
新的 tableView 旨在支持重新渲染整个 tableView 的可能性(这是我作为对错误报告的回应告诉我的)。但我没有找到该方法。是否存在未公开的功能?
谢谢。
danny
发布于 2 月 25 日 15:38嗨,Mike,很抱歉回复晚了。我错过了您的问题。
您可以详细说明您的请求吗?我的主要问题是
1)重新渲染整个 tableView 的用例是什么?
2)到底会重新渲染什么?
3)通过重新渲染,您是指应该销毁并重新创建 tableView 吗?
我只是想更好地了解您对此请求的意图。
谢谢!
Mike M
发布于 2 月 27 日 06:07这个用例是在工具栏中的编辑按钮被点击后,向表格视图的每一行添加一个按钮。在我的情况下,如果点击表格视图中的一个条目,你会进入正常的内容页面。如果按下编辑按钮,你将进入每个条目的编辑模式。就像iOS手机通讯录最近列表中的编辑按钮一样。
可能应该像这样工作:
本地列表 — 表格视图
本地标志
本地函数 buttonHandler(event) – 工具栏按钮处理程序
flag = true
list.reRender
end
本地函数 onRowRender(event)
if flag then
— 在行中放入新的内容
end
end
希望这能清楚地表达我的意思,我的英语不是很好,因为我是德国人。谢谢你们的关注。
danny
发布于 2月27日 09:19嘿,迈克。
我现在明白你想做什么了。我会尽快添加这个功能。
谢谢!
Mike M
发布于 2月27日 23:31我很期待。谢谢!
ShivaP
发布于 2月28日 10:46是的,我也需要类似的东西。现在我必须删除所有行并重新添加。能够重新渲染所有行或部分行会非常有帮助。
open768
发布于 2月23日 02:29哈哈,就像意大利面条代码的警告免责声明!这种情况到处都有,尽管游戏程序员通常会为了速度而牺牲结构和可维护性——而且执行速度和上市速度通常更重要。也许你们可以发布一些编码标准,以帮助其他人学习。
Mitaten
发布于 2月23日 02:48与旧的组件相比,新组件的性能如何?如果不需要任何新功能,是否值得迁移?
无论如何都很棒 🙂
IcySpark
发布于 2月23日 03:10@Danny 没有多点触控。
我刚刚查看打印时的按钮表,注意到了这个
_insertedIntoScrollView false
这是做什么的?我们如何访问它?
danny
发布于 2月23日 04:25嗨,IcySpark。
我不建议修改任何以“_”为前缀的组件属性。
它们都是内部处理的,自己修改可能会导致意想不到的错误。
也就是说,我没有看到你提到的按钮没有将焦点释放回滚动视图的问题。我会看一下,与此同时,如果你不介意提交一个错误,以便我在这里跟踪:http://developer.coronalabs.com/content/bug-submission
谢谢
Brian Burton
发布于 2月23日 16:45沃尔特,你真是太及时了!我正准备写我的新书的组件章节!
感谢你和 Corona Labs 团队提供了如此出色的功能和巨大的改进!
Francisco
发布于 2月24日 01:47我想知道如何使用 Widgets 2.0 创建自定义主题,因为现在 WidgetDemo 项目中没有任何示例。
在 API 中你可以读到:“请参阅 WidgetDemo 示例,了解主题文件的结构以及如何在实际应用程序中使用。”这没问题,但我找不到该示例。我使用带有自定义主题的 Widgets 1.0,很想知道 2.0 是如何实现的。
干杯!
Jack01
发布于 2月24日 05:43Widget 2.0 的文档/指南究竟在哪里可以找到?我下载了 1035,但我能找到的唯一东西是示例代码。
Jack01
发布于 2月24日 05:48啊,好的,可以在 https://developer.coronalabs.com/downloads/daily-builds 下载文档的 zip 文件。
Alex M
发布于 2月24日 22:12哇,沃尔特,作为 CTO、CEO 或你现在的任何职位,你的说话方式真有一套。先是前任 CTO,现在是 CEO,当你谈论自己的代码时称之为令人尴尬的代码,尤其是在组件是 beta 版之后出现,而不是 Corona 的早期匆忙添加时,这说明了什么?很高兴看到你如此刻意地贬低自己团队的工作。说 2.0 不是意大利面条代码或反模式是什么意思,因为它显然完全坏了,看看所有的抱怨,它可能是你发布的最糟糕的东西。
你还不如说代码和你的团队一文不值。
沃尔特
发布于 2月24日 22:37亚历克斯,你哪来这么大的怒气?那会导致黑暗面!
我参与过的所有产品(例如,Adobe Illustrator、苹果的 pre-Cocoa 化的 Final Cut Pro、Macromedia Flash 等)都有其相当多的不尽人意的地方——没人想碰的代码,尤其是在原始作者离开后。
我也听说过其他著名产品的类似恐怖故事。
对我们来说,最大的不同是 (a) 我们发布它是为了那些需要继续使用旧版本进行编码的人的利益,以及 (b) 我们非常实事求是地谈论 1.0 代码的质量——如果我们没有这种自我意识来这么说,我会更担心!
Alex M
发布于 2月25日 00:15生气?沃尔特显然你曾有幸为之工作的 Adobe 或苹果等任何公司都从未公开他们的源代码并称之为意大利面条代码或反模式,这只是间接表明他们有糟糕的程序员的一种方式。
如果你的发布是为了那些需要继续使用旧版本的人的利益,那么作为 CEO/CTO 和公司领导的你没有必要如此卑躬屈膝,几乎直接称你的下属无能,即使是已经离开你公司并如你所说“离开”的人。
你可以提到它并继续前进,但指责刚起步的程序员听起来像是你作为领导者的失败。难怪那么多员工离开了你的公司,如果你像这样责怪他们,这只是糟糕的领导。
罗布
发布于 2月25日 00:38@Alex M;谁说这段代码不是沃尔特自己开发的?你似乎知道是谁编写了这段代码,因为你称他们为“刚起步的程序员”?
愿意分享吗?
Alex M
发布于 2月25日 16:16@罗布,我猜你没读。沃尔特明确表示这是已经离开的人的代码,而你强调的“刚起步的程序员”这个词来自他自己的自述文件,因此使用了引号。wowow.com?不错,躲在一个虚假的网址后面。
@迪安,我们中的一些人被困在使用 Corona,因为我们已经深入到一个项目中,当我们意识到 SDK 实际上有多糟糕时,我们不能简单地放弃它,或者我们有需要在我们正在移植它们的同时进行更新的应用程序。我注意到你因为我而感到生气,但看看所有负面的评论,当其他人谈论他们面临的无数错误和问题时,你并没有大发脾气。我只能说,一个领导者会承担责任,而不是责怪他人,尤其是那些已经离开的人。这让整件事变得完全令人不快,如果你花时间阅读其他评论,然后再来针对我,你会看到其他人也有问题,无论他们是否粉饰了它们。
IcySpark
发布于 2月25日 04:14亚历克斯,我认为你过于苛刻了。是的,widget v2 存在问题,但可以解决,并且会及时修复。此外,即使是苹果也会发布经过严格测试的错误百出的 iOS 更新,所以请给这些人一点喘息的机会。他们本可以保持组件的现状,但他们却试图为了所有人的利益而改进它们。
沃尔特
发布于 2月25日 19:08亚历克斯,自述文件中的声明是对社区的警告。我们不认为这些是最佳实践,所以任何想编写它的人都应该考虑到这一点。
此外,我的观点是,意大利面条代码一直都会出现,即使在我们都喜欢的产品上也会出现。这不应该是一种指责。关键是要认识到应该如何处理它,而这正是我们正在做的。
无论如何,我看得出有些事情深深困扰着你。让我们在线下聊聊,看看我们是否能弄清楚。我的电子邮件是 walter 在 coronalabs。
罗布
发布于 2月25日 21:31实际上,亚历克斯,你错了,沃尔特指的是“任何刚起步的框架编写者”,指的是那些想从当前的 1.0 中学习或在其基础上构建的人,而不是像你所说的那样描述 widget 1.0 的开发者。
哇,看起来我惹恼了你,你竟然检查了链接?你的链接是什么?
迪安
发布于 2月24日 23:51太棒了,今晚又可以欣赏到另一篇亚历克斯·M 的精彩帖子了。
实际上,这次我将抵制住讽刺的冲动,只是问一个诚实的问题,我深深地希望你能给我一个答复。
你只是刻意地抨击 Corona 所做的一切,你从中得到了什么?我没有读过你任何一篇不是完全负面和含沙射影的评论。
我的意思是,如果你不喜欢这个产品,为什么不换个地方?你真的有那么多空闲时间吗?
你希望从中得到什么?
如果你想诋毁 Corona,恐怕这是行不通的,因为毫无疑问,这里的每个人(除了另一个人,你知道你在说谁)都完全忽略了你说的话,或者认为它完全是胡说八道。
我认为我们都很欣赏建设性的意见,甚至偶尔对 Corona 的一些挖苦,但你这种有系统的抨击既没有用处,也没有建设性。
你能给我们一些见解吗?
Master Preenz
发布于 2月25日 00:31我安装了每日构建版本,它很不错,但是当我尝试使用 widget.newButton() 并使用图像设置 default 和 over 参数时,没有图像出现。
danny
发布于 2月25日 17:11请参考最新的每日构建文档。
一些参数以及各种小部件的方法都已更改。
default => defaultFile
over => overFIle
谢谢!
Jack01
发布于 02:21,2月25日“此外,我们决定发布一个 iOS 主题和一个 Android 主题。” 好吧,但是这些发布的主题中到底有什么?有相关的文档吗?或者如何制作自己的主题?
IcySpark
发布于 04:08,2月25日我相信 Corona 的教程很快就会解释如何做到这一点。我很感谢 CoronaLabs 发布了 widget v1 的源代码,因为它允许我们仍然在新版本的每日构建中使用它,所以要为他们点赞。
danny
发布于 04:47,2月25日AlexM:说小部件 2.0 完全坏了是一种极端言论。已经报告了一些小的错误和一个缺少的方法,到目前为止还没有报告任何会阻止程序运行的问题。
@Jack01
我计划在本周制作一个指南,解释如何创建自己的小部件主题,以及我们现在提供的默认小部件主题中包含什么内容。
感谢您的耐心!
Mike M
发布于 07:32,2月25日我也不明白为什么 v2 已经发布(伴随着“砰!”的一声),却有那么多错误。并且一些基本功能显然根本没有包括在内,即使这些功能经常被用户要求,并且在更新中承诺了。而我关于上述内容的请求甚至没有得到回答。
danny
发布于 15:39,2月25日Mike,很抱歉错过了你的问题。
请查看我对您上述问题的回复。
Jack01
发布于 08:27,2月25日@danny,好的,谢谢你的回复和努力。
Francisco
发布于 11:04,2月25日@danny 是的,感谢你的努力!我个人迫不及待地想阅读那份指南,因为使用我自己的主题对我的应用程序至关重要! 呵呵 😉
我想补充一点,我很高兴能够在这段时间继续使用小部件 1.0,感谢各位的这个细节!
Pezzolo
发布于 14:58,2月25日我有超过 40 个应用程序使用了您的小部件。
它们无法使用您新的小部件版本。
我想要的是一种将旧的 “widget” 称为 require “widget”,而将小部件 v2.0 称为 require “widget2” 的方法。 这可能吗?
沃尔特
发布于 11:17,2月26日是的,你可以非常容易地做到这一点。请查看博客文章的底部。只需在您的项目中包含 widget-v1.lua,然后将所有 'require “widget”' 调用替换为: local widget = require “widget-v1”。
Joris Verschoor
发布于 00:53,2月26日抱歉.. 我已经离开了.. 太迟了。
在 moai 和 cocos2d 找到我。
David Rangel
发布于 15:50,2月26日Joris – 很遗憾听到这个消息。 但感谢您的阅读,希望在不久的将来我们能再次见到您。
David
danny
发布于 12:40,2月26日给大家更新一下。
到目前为止,人们提出的大部分错误和问题都已修复,修复程序将在下一个每日构建中提供。
谢谢
Jordan Schuetz
发布于 13:20,2月26日这会很棒!感谢新的库。它对 Android 也适用,这很棒……但这真的有必要吗?“对于任何有抱负的框架编写者来说,这真的是一种反模式”。 哈哈,你们是在批评自己的工程师!
沃尔特
发布于 13:33,2月26日谢谢!目标是警告(见上文)。这也促使我们为小部件 2.0 重写代码 🙂
Aaron Isaksen
发布于 14:20,2月26日每日文档中的迁移指南在哪里?我找不到它。
danny
发布于 02:52,2月27日如果您查看 widget* 部分,您应该看到“V2.0 迁移指南”。
或者,向下滚动到 API 索引页的底部,您将在那里看到它。
Norvin Altamirano
发布于 22:56,2月26日嘿,我正在实现自己的按钮,我需要能够在滚动视图中获取焦点。你们将如何支持这一点?我的意思是你们在强迫我们使用小部件按钮,对吧?我找不到任何与此相关的内容,也没有人回答我之前提出的问题。
Norvin Altamirano
发布于 23:54,2月26日没关系,我已经修复了它。只是创建了一个 takeFocus 实现,供其他人使用,只需调用 v1 中先前存在的代码即可。
display.getCurrentStage():setFocus( nil )
target.isFocus = false
— 将 event.target 设置为 scrollView 并从“began”阶段重新开始
event.target = self._scrollView._view
event.phase = “began”
self._scrollView._view.touch( self._scrollView._view, event )
我希望这对某人有所帮助。
yhx
发布于 00:14,4月12日非常好!
谢谢!
Mike M
发布于 06:09,2月27日感谢 danny 的回复。 我回答了你上面提出的问题。
mick
发布于 19:43,2月27日这个版本什么时候会发布免费版?
Ross
发布于 13:23,3月8日是的,对于我们这些正在评估是否可以将 Corona 实际用于商业应用程序的人来说(并且目前的小部件库让我认为只有在你想做很多变通的情况下才可以使用),我们什么时候可以测试 2.0? 对 2.0 抱有很高的期望!
Daniel
发布于 20:22,2月27日我的旧小部件不再适用于新小部件,我重新编译了,但它不起作用。 您能否发布一个关于它应该如何工作的示例或其他教程,因为周二的教程也像其他人评论中说的那样不起作用。
danny
发布于 2月28日 10:46Daniel
它们不会仅仅通过重新编译就可以工作。您需要进行迁移,因为一些属性已更改、删除或替换。
请在此处查看小部件 v2.0 迁移指南:https://docs.solar2d.cn/daily/api/library/widget/migration.html
Robert de Boer
发布于 21:05,2月27日@Joris
如果你已经离开了,为什么还在这里闲逛,哈哈。
你知道你喜欢 Corona!另一边的草并不总是更绿 🙂
来自荷兰的问候 🙂
ShivaP
发布于 10:51,2月28日谢谢。我快要发布我的新应用程序了。 我的问题是,如果我使用 1025 构建版本,那么我仍然需要添加 require widget-v1,还是该步骤适用于 1034 及更新的版本?
Dougi
发布于 02:25,3月1日很棒的新小部件。 然而,我只是在我的 HTC Sensation Android 手机上运行了小部件演示来测试它,widget.newTableView() 仍然非常没有响应。 我收到了很多用户关于它无法使用的反馈。
您必须按住很长时间才能使项目选择生效。
是我做错了什么还是这是错误?
我还发现选择器滚轮有问题。 使用 Storyboard 我创建了一个选择器滚轮,然后将其滑出屏幕,然后单击后退按钮打开另一个 Storyboard 场景,应用程序崩溃了。
非常感谢这些很棒的新小部件。它们将使生活轻松很多。
Winicius Siqueira
发布于 19:23,3月4日这是真的。widget.newTableView() 上的行需要几秒钟才能响应。
任何每日构建软件(或实验性软件,如果您熟悉 Debian)通常都有错误,并且正在等待社区测试和报告错误。我尝试了每日构建 1041,我对小部件不满意,因为展示它的演示很卡顿。 我相信一旦错误被删除,使用和开发它将是一种愉快的体验。
感谢 Corona Labs。
JCH_APPLE
发布于 09:50,3月18日有什么方法可以重新启用 “tabBar:deselectAll()” 吗?
或者只是禁用 tabBar 中的一个按钮? setSelected 允许选择,但如何“取消选择”?
Paul
发布于 14:28,3月27日是否有任何计划支持 Android 的 ARMV6? 如果有,我会加入!
stuart warren
发布于 08:17,3月28日是否有人记录了按钮主题功能?
如果您按照示例操作,然后添加主题,它就会崩溃。 显然,主题会覆盖您在代码中告诉它的内容,或者启用/禁用某些功能。
我觉得自己就像迷宫中的一只老鼠,文档与我正在运行的代码不匹配,代码无法可靠运行,技术支持也很少。 当我冷启动我的机器并从模拟器运行最小的存根代码应用程序时,它首先认为它正在 Droid 上运行,然后它关闭并重新启动为它最初应该执行的 iPad。到目前为止,我对 Corona 没有足够的信心向公众发布应用程序。
在文档中,一旦您深入研究,就很难返回上一级。 “另请参阅”字段几乎从未使用过,而且大多数都是为不需要文档的人编写的。
当程序员进行更改并更改文档时,他们应该定义更改,以便在代码出现时显示文档。在描述代码的文档发布之前发布代码的价值很小。 每位程序员都应该负责确保文档按照他们的代码中的描述工作,并与编写者一起使两者匹配。
Paulo
发布于 12:35,4月3日是否有办法动态更改 defaultFile/overFile 选项?
我只是想创建一个按钮来打开/关闭音乐主题。 但我想使用自己的图像,共有 4 个,静音默认开启/关闭和悬停开启/关闭。
Peter Chen
发布于 07:37,5月17日当我应用 widget-v1 时,我发现该库中不包含 widget.newSpinner。那么您能更新 widget-v1 吗?非常感谢。
Peter Chen
发布于 07:39,5月17日当我应用 widget-v1.lua 时,我发现 widget.newSpinner 在此程序中不可用。 您能帮我们更新此代码吗? 非常感谢。