如何从数组和循环创建一系列图层?

时间:2014-09-04 04:44:27

标签: coffeescript framerjs

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

2 个答案:

答案 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"