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

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(使用前将#替换为@)

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

随机推荐

  • 在 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 演示