代号一动画麻烦(也在纸牌演示中)?

2023-12-21

《代号一号》动画发生了什么?我使用了很多它们,截至 12 月,我的应用程序不再工作。当我六月离开时,一切都很好(一年多以来都是如此)。

我的应用程序是一款跳棋(跳棋)游戏,自 2013 年起就在应用程序商店中提供。在观看 CN1 Poker 演示后,我完全重写了我的 GUI,因为我想将此类动画添加到我的应用程序中。现在发生的事情是我突然遇到索引越界异常。我将范围缩小到以下情况:

cont.addComponent(comp);
...
...
cont.getComponent(0);  <-- index out of bound exception: 0 out of 0

我已经在 6 月份使用了 newVM=true,我相信这是现在的默认值。我尝试通过添加来解决问题

cont.animateLayoutAndWait(100);

在 addComponent 调用之后。这修复了索引越界异常,但现在应用程序在短时间内正常工作后会随机崩溃。我尝试过,但一直无法找到问题的根源。 CN1 中发生了一些变化,因此我的代码不再有效。 (另请参阅旧论坛,搜索“草稿”,我在那里发布了我的基本设计的完整列表。)

我研究了新的 Solitaire 演示,它具有我需要的大部分动画功能。应用商店版本的 Solitaire 在我所有的 iOS/Android 设备上运行良好。一个小错误是可以拖动一组卡片,其中包括一些面朝下的卡片,而在拖动操作期间这些卡片面朝上。此外,要挑选正确数量的卡片也非常困难。拖动一组卡片还会在屏幕上留下白色痕迹,看起来不太好。这也发生在模拟器中。

作为实验,我重新设计了 GUI 布局,使其与 Solitaire 代码的布局完全相似:两层按钮,唯一的区别是我使用 GridLayout(10,10),而 Solitaire 使用 SolitaireLayout()。这是有效的,除了一件事:如果一个棋子在棋盘上向下移动,它会正确地移动到其他棋子的上方,但如果一个棋子在棋盘上移动,它会在其他棋子的下方移动。

我的代码如下所示:

Button pc = (Button)piecesCnt.getComponentAt(a1);
Button to = (Button)piecesCnt.getComponentAt(a2);

piecesCnt.removeComponent(pc);
piecesCnt.addComponent(a1, createPieceButton(Piece.EMPTY_PIECE, true));
piecesCnt.removeComponent(to);
piecesCnt.addComponent(a2, pc);

piecesCnt.animateLayoutAndWait(1000);

所以看起来按钮总是按照 GridLayout 顺序绘制,而我希望动画(移动)按钮将绘制在最后/顶部,就像纸牌中的移动卡片一样。

这是 SolitaireLayout 与 GridLayout 中处理动画的区别吗?如果是这样,可以在动画逻辑中改变它吗?否则我必须添加额外的动画层和大量的开销。

在 Android 上,动画(运动)无法正常工作。因此,我决定在我的设备上使用当前 CN1 版本(插件 3.2.6,libs 2016-01-11)自行构建和测试 Solitaire 演示。我将动画速度减慢了 10 倍,以便更好地了解正在发生的情况。在模拟器中,布局和动画大部分工作正常,但在我的 iOS 和 Android 设备上却存在很多问题。

模拟器(Windows 7、NetBeans 8.0.2): - 我用文本替换了字体图标,因为它们丢失了。 - 但是如何访问汉堡菜单?我没有看到这三个点,甚至没有空间。 - 有时可以拖动一组牌,并拿走一些面朝下的牌;拖动时,它们会暂时翻转面朝上。 - 自动播放似乎并不总是有效。 (并非所有动作都会进行。)

在 iOS 9.2 (iPad 4)、iOS 8.4 (iPhone 4) 上: - [?] 显示在汉堡菜单复选框中。 - 启动后,画面背景卡背跳转到容器/屏幕的底部。 - 有时,在从牌组发牌的动画中,最右侧画面中的牌会暂时面朝上,而已经面朝上的牌会翻转为面朝下。然而,最终的交易状态是正确的。 - 撤消/重做:有时会导致牌面朝上放在牌组 0 上,而牌面朝下放在牌组 1 上。 - 重做有时会“跳”到新布局而不是动画。 仅限 iPhone: - 一系列自动游戏动作留下了不一致的基础状态:顶牌红心-J、梅花-10、梅花-K、钻石-Q;即,2 张俱乐部卡位于不同的基础牌堆上。

在 Android 5.1.1 (Nexus 7) 上存在更多问题。 - 从牌组开始交易的动画看起来并不漂亮。卡片被插入(滑至)工作画面堆栈的底部,因此它们会滑到其他卡片下方。移动的牌应面朝下,但通常面朝上,始终显示发给画面 1 的第一张牌。最右边画面中的牌暂时面朝上。最后,将已经面朝上的卡片翻转面朝下并再次翻转过来。然而,最终的交易状态是正确的。 - 当连续进行多个动作时,自动播放也不正确。在动画过程中,几张正面朝上的基础牌会暂时改变其牌值(正面)。此外,移动卡会滑到基础卡下方(有时会滑到基础卡上方,但这是例外)。 - 完成游戏后,做得很好的屏幕被损坏,因为文本似乎没有显示在卡片上,而是显示在卡片下方(在一个大的空白区域中),而卡片在屏幕顶部的一小部分中仅部分可见。 - 开始新游戏经常失败,因为未开始从牌组发牌;屏幕上显示了一副牌和四张国王放在地基上,而画面是空的。当点击牌组时,会发一张牌并显示完成的顺序。有时重复此操作会成功开始新游戏。

所有这一切已经花费了很多时间,但我的应用程序仍然没有再次运行,这非常令人沮丧。在这个主题上遇到很多麻烦,即使下载了演示应用程序,使用 Codename One 构建此类应用程序感觉就像在流沙上构建一样。请帮忙!


当你遇到麻烦时,你应该直接问,而不是在这个岗位上那么努力。是的,我们确实做了一个重大的兼容性破坏性更改,作为长期存在的动画问题(并行运行的动画可能发生冲突)的错误修复的一部分。

这引入了一些冲突,但减少了设备/模拟器之间的不一致,这总是一件好事。

我们在这里宣布了这一点:https://www.codenameone.com/blog/new-animation-manager.html https://www.codenameone.com/blog/new-animation-manager.html

现在创建便携式动画实际上要简单得多,因为所有内容都会同步以避免动画冲突,例如如果你这样做Component.removeComponent()当动画正在进行时,它将隐式添加到动画队列中,并在动画完成后执行,而不是立即执行。

要将您的下一个操作推迟到动画结束后,我们有:

form.getAnimationManager().flushAnimation(() -> doThisAfterAnimation());

更简单,没有特殊情况的全局锁。

将代码直接“移植”到新方法有点困难,但看起来您的动画逻辑依赖于耗时 1000 毫秒的动画,并且当方法返回时动画完全完成,但情况可能并不总是如此(如添加/删除调用或其他逻辑可能会妨碍)。

在过去,保证动画完整的唯一方法是将它们分开,但现在您可以使用flushAnimation确保所有动画都已完成。请记住,一些明确不是动画的东西现在可能会意外地变成动画,例如如果您调用它们时正在进行动画,则添加/删除组件将变成动画...

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

代号一动画麻烦(也在纸牌演示中)? 的相关文章

  • android-security :Google Play 警告:您的应用程序包含 SQL 注入问题

    作为我们应用程序的一部分 我们使用两个 contentProvider 但两者都受到 android exported false 的保护 但我们仍然收到一封 Google Play 警告邮件 您的应用程序包含 SQL 注入问题 他们提到的
  • 公共领域有哪些替代方案?

    我正在用 java 编写一个游戏 正如问题标题建议的那样 我在类中使用公共字段 暂且 据我所知 公共领域很糟糕 我有一些理解其中的原因 但如果有人能澄清为什么你不应该使用它们 那将不胜感激 问题是 从我所看到的来看 这似乎是合乎逻辑的 是使
  • HYBRIS - 组件和插槽如何在 JSP 文件中工作?

    最近我正在使用 Hybris 我无法理解这些组件是如何工作的 我知道如何创建和定义一个 如何将它们添加到我想要的页面等 但我不明白如何使用该标签
  • 如何以编程方式检查 UILabel 是否具有属性文本或普通文本?

    有什么方法可以判断 UILabel 是否使用其文本设置label attributedText or label text财产 问题是当你设置attributedText text也会更新 反之亦然 因此无法检查这些属性是否为 nil 受
  • Java文本输出中的UTF-8编码问题

    我一直致力于测试高棉语 Unicode Wordbreaker 的各种解决方案 高棉语单词之间没有空格 这使得拼写检查和语法检查变得困难 以及从旧高棉语转换为高棉语 Unicode 我得到了一些源代码 现在在线 http www white
  • 调用 MediaScannerConnection.scanFile 后,MediaStore 内的 Android 缩略图不会刷新

    我正在尝试构建一个类似画廊的应用程序 它将在外部存储上执行以下功能 列出所有包含图像的文件夹 列出所有可供公众使用的图像 不会探测里面的文件Android data 到目前为止 我可以列出所有图像以及包含图像的文件夹 然而 我后来发现这些图
  • 回购:找不到命令?

    我是 git 和 repo 的新手 我使用的是window 7 所以我使用cygwin 我已经从 cygwin 安装程序安装了 git 之后我尝试在 cygwin 中使用以下命令进行存储 repo init u git android gi
  • 在JAVA中将数据写入.txt文件?

    我想知道是否是在JAVA中将计算的数据写入文本文件 我的 JAVA 代码是一个基于 GUI 的 gpa 计算器 我只想添加一个 JButton 和 ActionListener 它将类名 GPA 点和计算出的 GPA 写入 txt 文件 这
  • 为什么 NSOrderedSet 不继承 NSSet?

    当然 有序集是集合的更具体的情况 那么为什么NSOrderedSet继承自NSObject而不是NSSet 我通过了界面NSSet你是对的 有序集似乎满足里氏替换原则 http en wikipedia org wiki Liskov su
  • 有没有办法防止 Spring Boot 覆盖 bean?

    与春天的抽象可刷新应用程序上下文 http docs spring io spring docs current javadoc api org springframework context support AbstractRefresh
  • 使用 Spark SQL 时找不到 Spark Logging 类

    我正在尝试用 Java 进行简单的 Spark SQL 编程 在程序中 我从 Cassandra 表获取数据 将RDD into a Dataset并显示数据 当我运行spark submit命令 我收到错误 java lang Class
  • 如何使用JSqlParser向sql添加where条件?

    我想用JSqlParser向sql添加where条件 例如 Before select from test table where a 1 group by c After select from test table where a 1
  • Android中计算两个时间之间的差异

    我有两个字符串变量 例如 StartTime 和 EndTime 我需要通过用 StartTime 减去 EndTime 来计算 TotalTime StartTime和EndTime的格式如下 StartTime 08 00 AM End
  • 如何组织课程、课程包[关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 您如何决定包名称应该是什么以及什么类应该放入哪个包中 我正在开发一个项目 在该项目中 我不断添加 删除类 并且不确定我是否需要一个新包 或者应该将其添
  • 当键位于父类中时,如何将一对多集合映射到连接的子类

    我想将一对多集合映射到子类 但集合的键是父类的属性 目前我正在映射 AbstractFoo Foo 和 Bar 类 如下所示
  • 无法验证 serde:org.openx.data.jsonserde.jsonserde

    我编写了这个查询来在配置单元上创建一个表 我的数据最初是 json 格式 所以我已经下载并构建了 serde 并添加了它运行所需的所有 jar 但我收到以下错误 FAILED Execution Error return code 1 fr
  • Java 8 流过滤器 - 基于排序的更新

    我正在尝试对过滤器中的字段进行排序 输入文件 样本记录 DocumentList Document id 5975ff00a213745b5e1a8ed9 u id mailboxcontent id 5975ff00a213745b5e1
  • 在Java中将32bpp图像转换为16bpp图像

    如何使用 Java 库将 32bpp 图像 ARGB 转换为 16bpp 图像 ARGB 出于我的好奇 在像素级别 这种转换有什么作用 如果我有一个保存像素值 包含所有通道 的 int 值 那么在转换发生后该 int 会有什么不同 32 位
  • 如何在Java中添加两个“卡”的值?

    我正在开发一个项目来模拟二十一点游戏中的第一笔交易 到目前为止 程序创建了两张随机等级 ACE 到 KING 和随机花色的牌 我正在努力创建一个切换表或 if else 梯形图 将两张卡的附加值分配为可变分数 下面的代码从概念上代表了我想要
  • 与桌面浏览器相比,移动浏览器有多强大? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi

随机推荐

  • 在 Excel 中创建序列列

    我有一列包含名称的列 我想添加一列来根据名称计算每行的序列 因此 如果一个名称出现多次 即 4 次 则该名称的第一行将具有序列 1 第二行将具有序列 2 依此类推 Name Sequence Andrew 1 Andrew 2 Andrew
  • Chef 中的引导问题

    我已经使用 Chef 设置了基本的基础设施 这包括本地厨师服务器 基于 ubuntu 工作站和基于 ubuntu 的服务器 用作节点 请注意 整个基础设施都位于我办公室网络的防火墙后面 我已经为服务器访问互联网做了必要的代理设置 所以这就是
  • QT KernelBase!RaiseException 位于 0x759fc41f

    评论多于问题 下面描述了我今晚遇到的一个问题以及我如何 纠正 它 这些事件需要几个小时的时间才能解决 由于该网站是我最喜欢的信息来源之一 因此认为这篇文章可能对其他人有益 欢迎任何有关诊断 QT Creator 运行时异常的建设性意见 该异
  • 当属性 Visibility 更改时为 StackPanel 制作动画

    在 WPF 3 5 带有 SP1 中 我只是当我更改属性可见性时 我想为 StackPanel 制作动画 我不知道这个 StackPanel 的高度 因为它的内容决定了它的高度 因此 当我将 StackPanel 的属性更改为 Visibl
  • 使用 jQuery .load 函数刷新元素而不重复它

    当用户点击提交按钮时 div forum应该刷新 不刷新页面 然而 由于某种原因 它反而创建了一个新的 div forum在原始 div 中 如下所示 虽然我知道我可以通过在 div 周围添加一个容器来防止这种情况 forum 我想知道是否
  • 使用 NAudio 将流数据保存到 WAV 文件

    我想将传入的流数据保存到硬盘驱动器上的 WAV 文件中 如何更改下面的代码才能将流录制到有效的 WAV 文件中 来自演示here http naudio codeplex com SourceControl changeset view a
  • 收到 icmp 请求,但没有回复 [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 这个问题似乎不是关于主要由程序员使用的特定编程问题 软件算法或软件工具 help on topic 如果您认为该问题与主题相关另一个 St
  • 如何处理ggplot2中的“data of class uneval”错误?

    在尝试将新行覆盖到现有行时ggplot 我收到以下错误 Error ggplot2 doesn t know how to deal with data of class uneval 我的代码的第一部分工作正常 下图是来自美国中西部电力市
  • AVPlayer 播放 iOS 7 后台通知中的音频

    I have audio fetch and remote notification set in UIBackgroundModes我通过以下方式成功接收了我的应用程序在后台 未激活 的远程通知 void application UIAp
  • 在 Step Function 内循环

    我试图在循环中调用步骤函数中的几个步骤 但我无法弄清楚我需要如何执行此操作 这是我现在所拥有的 我需要添加另一个 lambda 函数 GetReviews 然后它将循环调用 CreateReview SendNotification 我该怎
  • 使用 UniformGrid 的列表框 - 项目未居中

    我有一个使用 UniformGrid 作为 ItemsPanelTemplate 的列表框 这是一个照片列表 我希望照片在网格的每个单元格的中心水平居中 但似乎无论我做什么 图像都会与每个单元格的左侧对齐 这是我当前的 XAML
  • Asp.Net、SQL 和时区

    有人问过 但我正在努力掌握如何在网络应用程序中处理时区的概念 我有一个跟踪项目进度的系统 我的 SQL Server 数据库中有一个 ProjectStartDate DATE 还有一些字段和表格 但让我们重点关注其中一个 服务器位于美国某
  • 有没有办法在 MySQL 中修剪多个字符(忽略它们的组合)?

    我想从 MySQL 中的字符串中删除前导空格和尾随空格 SP n t 最终 r 数据已经在 MySQL 表中 我无法检索它们以在 PHP 中处理 因为这应该太慢了 我尝试过这种语法 UPDATE table set field TRIM B
  • 为python请求get函数添加装饰器

    我正在寻找一种方法来添加某种适用于所有实例的装饰器requests get被用在任何函数中 例如 my custom decorator def hello r requests get https my api url The my cu
  • Eclipse 报告 JSP 文件中的语法错误,但应用程序可以运行

    我正在检查一个 JAVA 项目的代码库 我发现 Eclipse 在以下几行显示错误
  • Qt Creator 中的 Valgrind

    使用 Qt Creator 的 Memcheck 函数返回以下内容 valgrind Bad option xml yes but no XML destination specified valgrind xml yes has been
  • 如何在 Silverlight 中获取按钮按下事件之外的鼠标按钮状态?

    我有以下情况 我处理在 Silverlight 应用程序中按下鼠标左键的时间 并在按住鼠标和移动鼠标时执行一些操作 当释放左按钮时 我关闭告诉它执行该操作的标志 然后鼠标移动处理程序不再执行该操作 问题是 如果用户位于控制区域中 按下左键并
  • 来自角度应用程序的 Rest api 调用将错误传递给确实的 api

    下面是我创建的一个角度服务 用于从 Indeed 职位搜索 api 返回搜索结果 function use strict angular module career resources factory JobSearchService ht
  • C# 中最常见的命名约定是什么?

    C 中类 命名空间和方法最常见的命名约定是什么 像 Java 中那样有 getter setter 风格的方法很常见吗 名称指南 http msdn microsoft com en us library ms229002 aspx fro
  • 代号一动画麻烦(也在纸牌演示中)?

    代号一号 动画发生了什么 我使用了很多它们 截至 12 月 我的应用程序不再工作 当我六月离开时 一切都很好 一年多以来都是如此 我的应用程序是一款跳棋 跳棋 游戏 自 2013 年起就在应用程序商店中提供 在观看 CN1 Poker 演示