0

基本上,我需要从五个图像创建图层。有没有办法通过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
4

2 回答 2

1

你的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与一个数组进行比较,这并不是很有效率。

我认为您想使用-loop的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赋值,所以我把它拿出来了。

于 2014-09-04T05:17:30.173 回答
1

您的问题是您发布的代码不起作用并且您正在寻找替代解决方案吗?

编辑:

我在这里看到的唯一问题是,您对从数组中的当前位置传递的字符串变量以及您正在初始化的新图层对象都使用了“tab”。

尝试这个:

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"
于 2014-09-04T04:51:34.770 回答