Ruby 鞋子动画

Ruby Shoes animation

为什么只有第一个动画在我的程序中运行良好?图像应从左向右移动,然后从右向左移动。这只会从左到右发生。

Shoes.app do

  @im = image("D:/image.jpg", left: 0, top: 220, width: 180, height: 230)

  @an = animate 20 do
    if @im.left < (self.width-@im.width)
      @im.left += 5
    else
      @an.stop
    end
  end

  @an2 = animate 20 do
    if @im.left <= (self.width-@im.width) and @im.left > 0
      @im.left -= 5
    else
      @an2.stop
    end
  end

end 

看起来您不需要两个 animation 对象,而是使用单个动画对象在动画期间前后移动。

这是一个工作的应用程序,它从左到右和从右到左执行由变量 @iterations 定义的指定迭代次数的动画。

在 运行 之前,不要忘记更新图像路径(目前,a.jpg

Shoes.app do

  @im = image("a.jpg", left: 0, top: 220, width: 180, height: 230)

  @direction = :forward
  @iteration = 5

  @an = animate 64 do
    if (@im.left < (self.width-@im.width)) && @direction == :forward
        @im.left += 5
    elsif @direction == :forward
        @direction = :backward 
    end

    if @im.left > 0 && @direction == :backward
        @im.left -= 5
    elsif @direction == :backward
        @direction = :forward
        @iteration -= 1
    end

    @an.stop if @iteration == 0
  end
end