2015-12-23 5 views
-1

Почему только первая анимация работает хорошо в моей программе? Изображение должно перемещаться слева направо, а затем справа налево. Это происходит только слева направо.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 < ([email protected]) 
     @im.left += 5 
    else 
     @an.stop 
    end 
    end 

    @an2 = animate 20 do 
    if @im.left <= ([email protected]) and @im.left > 0 
     @im.left -= 5 
    else 
     @an2.stop 
    end 
    end 

end 

ответ

0

Похоже, что вам не нужно два 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 < ([email protected])) && @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