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