一个简单关于动画的暂停和开始操作的处理

// 暂停动画
    /*
     1.取出当前的动画的时间点,就是要暂停的时间点
     2.将动画的运行速度设置为0,动画默认的运行速度是1.0
     设置动画的时间偏移量,制定时间偏移量的目的就是让动画定格在该时间点*/
    
    CFTimeInterval pauseTime=[self.view.layer convertTime:CACurrentMediaTime() fromLayer:nil];
    [self.view.layer setTimeOffset:pauseTime];
    [self.view.layer setSpeed:0];
    
    
    // 动画回复
    /*
     1.将动画的时间偏移量为暂停的时间点
     2.根据媒体时间计算出准确的启动动画时间 对之前暂停动画时间进行修正*/
    pauseTime=self.view.layer.timeOffset;
    CFTimeInterval beginTime=CACurrentMediaTime()-pauseTime;
    [self.view.layer setTimeOffset:0]; // 清空偏移时间
    [self.view.layer setBeginTime:beginTime];
    [self.view.layer setSpeed:1.0];
    
    if(self.view.layer.speed ==0){ // 如果暂停,处理动画
        
    }else{
        
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,以下是一个简单的Java代码示例,实现了开始和暂停功能的动画播放: ```java import javax.swing.*; import java.awt.*; import java.awt.event.*; public class AnimationPlayer extends JFrame implements ActionListener { private Timer timer; private int xPos, yPos; private boolean paused; public AnimationPlayer() { super("Animation Player"); // 设置窗口大小和布局 setSize(400, 400); setLayout(new BorderLayout()); // 创建一个面板来显示动画 JPanel animationPanel = new JPanel() { @Override public void paintComponent(Graphics g) { super.paintComponent(g); g.setColor(Color.RED); g.fillOval(xPos, yPos, 50, 50); } }; add(animationPanel, BorderLayout.CENTER); // 创建开始和暂停按钮 JButton startButton = new JButton("Start"); JButton pauseButton = new JButton("Pause"); JPanel buttonPanel = new JPanel(); buttonPanel.add(startButton); buttonPanel.add(pauseButton); add(buttonPanel, BorderLayout.SOUTH); // 添加按钮的事件监听器 startButton.addActionListener(this); pauseButton.addActionListener(this); // 初始化动画位置和状态 xPos = 0; yPos = 0; paused = true; // 创建定时器,每隔一段时间更新动画位置 timer = new Timer(50, new ActionListener() { @Override public void actionPerformed(ActionEvent e) { if (!paused) { xPos += 5; yPos += 5; animationPanel.repaint(); } } }); } @Override public void actionPerformed(ActionEvent e) { if (e.getActionCommand().equals("Start")) { paused = false; timer.start(); } else if (e.getActionCommand().equals("Pause")) { paused = true; timer.stop(); } } public static void main(String[] args) { AnimationPlayer player = new AnimationPlayer(); player.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); player.setVisible(true); } } ``` 在这个示例,我们创建了一个继承自JFrame的AnimationPlayer类,它包含了一个定时器、一个面板用于显示动画、开始和暂停按钮,并实现了ActionListener接口来处理按钮的事件。 在构造函数,我们初始化了动画的位置和状态,并创建了定时器。定时器每隔50毫秒更新一次动画的位置,如果没有暂停的话。我们在定时器调用了animationPanel的repaint()方法来刷新面板,从而更新动画的位置。 在actionPerformed()方法,我们检查了按钮的命令,如果是“Start”按钮,则将paused设置为false,并启动定时器;如果是“Pause”按钮,则将paused设置为true,并停止定时器。 最后,在main()方法,我们创建了一个AnimationPlayer对象,并设置了关闭窗口时的默认操作为退出程序。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值