基本上,我需要从五个图像创建图层。有没有办法用for
循环执行此操作,而不是手动创建图层?以下代码是我的尝试,但我不确定如何从这里调试。
tabs_strings = ["nearby", "adopted", "my_cats", "settings", "bruce"]
for tab in [0..tabs_strings]
tab = new Layer
x:0, y:0, width:640, height:1136, image:"images/#{tab}.jpg"
# nearby = new Layer
# x:0, y:0, width:640, height:1136, image:"images/nearby.jpg"
# adopted = new Layer
# x:0, y:0, width:640, height:1136, image:"images/adopted.jpg", opacity: 0
# my_cats = new Layer
# x:0, y:0, width:640, height:1136, image:"images/my_cats.jpg", opacity: 0
# settings = new Layer
# x:0, y:0, width:640, height:1136, image:"images/settings.jpg", opacity: 0
# bruce = new Layer
# x:0, y:0, width:640, height:1136, image:"images/bruce.jpg", opacity: 0
答案 0 :(得分:2)
你的for
循环是,嗯,很奇怪。 tabs_strings
本身就是一个数组,所以你说:
for i in [0 .. some_array]
而不是通常的:
for i in [0 .. some_number]
或
for e in some_array
如果您查看JavaScript版本,您会看到:
for (tab = _i = 0; 0 <= tabs_strings ? _i <= tabs_strings : _i >= tabs_strings; tab = 0 <= tabs_strings ? ++_i : --_i) {
所以你最终将0
与一个数组进行比较,这并不是非常有效。
我认为你想使用for e in array
循环的for
形式:
for tab in tab_strings
new Layer
x:0, y:0, width:640, height:1136, image:"images/#{tab}.jpg"
循环中不需要tab
赋值,所以我把它拿出来了。
答案 1 :(得分:1)
您的问题是您发布的代码不起作用以及您正在寻找替代解决方案吗?
编辑:
我在这里看到的唯一问题是你正在使用&#34; tab&#34;对于从数组中当前位置传递的字符串变量,以及要初始化的新Layer对象。
试试这个:
tabs_strings = ["nearby", "adopted", "my_cats", "settings", "bruce"]
for tab in [0..tabs_strings.length]
tabLayer = new Layer
x:0, y:0, width:640, height:1136, image:"images/#{tab}.jpg"