正如我在较早的文章中与Inerdia讨论的那样,
当我在某些JPanel中(肯定是EDT-
我已通过方法check进行检查)时,仍然有些奇怪,然后我调用了一些动画线程(该线程扩展Thread)以在内部启动通过检查我不在EDT上的线程。
所以我想我应该是因为动画应该在EDT上,所以我用runnable和invokeAndWait()包装了animate方法,但是仍然在动画线程中得到了我不在EDT上的信息,同时像我之前所说的那样调用了该代码是在EDT上,所以,我的invokeLater似乎不将该动画放在EDT上?这是为什么?
相关代码(在将animate方法与runnable包装在一起并传递给以后调用:
因此,在JPanel上有一行:
Animate(trainRailRoadTrack);
实现是:
void Animate(ArrayList<RailroadSquare> i_TrainRailRoadTrack) {
ArrayList<JPanelRailoadSquare> playerRailoadPanelsTrack = getRelevantRailroads(i_TrainRailRoadTrack);
new SuspendedAnimation(playerRailoadPanelsTrack).start();
jPanelBoard1.GetGameManager().EmptyPlayerSolution();
}
private class SuspendedAnimation extends Thread
{
private ArrayList<JPanelRailoadSquare> m_PlayerRailoadPanelsTrack;
public SuspendedAnimation(ArrayList<JPanelRailoadSquare> i_PlayerRailoadPanelTrack)
{
m_PlayerRailoadPanelsTrack = i_PlayerRailoadPanelTrack;
}
@Override
public void run()
{
m_IsAnimationNeeded = true;
for (JPanelRailoadSquare currRailoadSquare: m_PlayerRailoadPanelsTrack)
{
System.out.println("Is on Event dispatch thread: "+SwingUtilities.isEventDispatchThread());
currRailoadSquare.SetGoingTrain();
repaint();
try
{
Thread.sleep(150);
}
catch (InterruptedException e){}
currRailoadSquare.UnSetGoingTrain();
repaint();
}
}
SuspendedAnimation.run()
您的内心 并不
在EDT上。那是您需要使用的地方invokeLater()
,而不是在调用时Animate()
:
@Override
public void run()
{
// We're outside the EDT in most of run()
m_IsAnimationNeeded = true;
for (JPanelRailoadSquare currRailoadSquare: m_PlayerRailoadPanelsTrack)
{
SwingUtilities.invokeAndWait(new Runnable() {
// The code that "talks" to Swing components has to be put on
// the EDT
currRailoadSquare.SetGoingTrain();
repaint();
});
// We want to keep sleeping outside the EDT.
try
{
Thread.sleep(150);
}
catch (InterruptedException e){}
SwingUtilities.invokeAndWait(new Runnable() {
currRailoadSquare.UnSetGoingTrain();
repaint();
}
}
}
问题内容: 我正在尝试使用一些简单的Android动画实现线程。我只是在使用sleep()时出错- 它说我需要一个方法。我知道可能有一个明显的解决方案。我的应用程序只是将一个在圆周上移动的球放置在一个随机的位置。我想要的是继续在随机位置放置形状。无论如何,有人可以告诉我我的线程在做什么错吗?谢谢。 }} 问题答案: 如果实现Thread或HandlerThread,请确保在等待辅助线程完成时U
问题内容: 我想在我的WP博客中添加它。这样,每个新的div帖子的边框上都会有此动画。但是问题在于它在SVG中。无论如何,我可以在不使用SVG的情况下使此动画工作,并且我也不想使用javascript。 可以说代码是: 问题答案: CSS可以做到这一点,并且在使用多个背景并使用动画更改其位置时非常简单。 这是一个页面加载后边框连续不断移动的示例。 归功于web-tiki,它有助于修复最初在动画每个
我正在使用JavaFX呈现一些SVG内容。我定义了许多方法,返回不同SVG形状(椭圆、圆、矩形、直线等)的路径。它们似乎都管用,除了线条法。JavaFX不会返回错误(意味着路径可能是正确的),但它也不会画出任何东西。这里是我的方法。 方法根据返回或,返回或。 下面是一个示例方法调用: 在我看来是有效的,但什么也没有画出来...
编辑动画曲线 Unity 编辑器提供了几种不同的功能和窗口,用 曲线 来显示和编辑数据。这些用来查看和编辑的方法大体上相同,但是也有一些区别。 动画视图 使用曲线来显示和编辑 动画剪辑 中动画属性随时间变化的值。 动画视图 脚步组件可以含有 动画曲线 类型的成员变量,可以用于各种对象。在检视视图中点击这些变量将弹出 曲线编辑器。 曲线编辑器。 声源 组件使用曲线来控制声源的衰减量(随着距离变化)和
使用动画曲线 属性列表 在一段 动画剪辑 中,任意动画属性都可以拥有 动画曲线,也就是说,动画剪辑控制着属性如何随时间变化。在 动画视图(左侧)的属性列表区域,罗列出了当前所有参与动画的属性。当动画视图处于关键帧清单模式,每个属性的值是一个条直线轨道,但是在曲线模式下,正在改变的属性值被可视化为曲线图形。无论你用哪种模式查看,曲线一直存在 — 关键桢清单模式只是简单的关键帧数据预览。 在 曲线模式
本文向大家介绍Android编程中Tween动画和Frame动画实例分析,包括了Android编程中Tween动画和Frame动画实例分析的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了Android编程中Tween动画和Frame动画实现方法。分享给大家供大家参考,具体如下: Animation主要有两种动画模式:Tween动画和Frame动画 Tween动画由四种类型组成 alpha