2016-09-26 67 views
2

嗨我對JavaScript和CoffeeScript相當陌生,所以我目前正在研究原型並同時學習語言。在循環中訪問咖啡腳本中的數組中的其他值(framer.js)

除了一件重要的事情之外,下面的代碼塊幾乎完成了我想要的工作。任何幫助,將不勝感激

categories.forEach (cat,i) -> 
    mainCat= categ[i] = new Layer 
    width:185 
    height:77 
    parent:catSelect.content 
    y:13 
    x:205*i+20 
    image:categories[i] 
    categ[i].states.add 
    off: 
     image: categories[i] 
    on: 
     image: altCat[i] 
    categ[i].on Events.Click, -> 
    categ[i].states.next("on","off") 

    if categ[i].states.current is "on" 
     print "true" 

這裏我有一個循環來創建類別按鈕(mainCat),其具有2種狀態附着的圖像的單獨的陣列(類別[]和altCat [])。

我已經把這個循環放在一個數組中,所以現在,當我點擊一個類別時,我可以使用categ [i]來檢查它的狀態,但這幾乎是我的限制。

現在,這基本上把我的categ []數組中的對象當作多項選擇,而我希望它只允許數組中的一個對象一次處於「on」狀態,一旦它處於「 on「狀態,它需要顯示特定的行卡,同時將其他行隱藏在另一個數組中(稱爲卡[])位於單獨的圖層/格中。

即是這樣的:提前

if categ[!=i].states.current is "on" 
    categ[!=i].states.switch("off") 
    cardsRow[!=i].opacity=0 
    cardsRow[i].opacity=1 

謝謝!

+0

請問您可以爲代碼發佈更多上下文嗎? – kazzyt

回答

0

您必須遍歷所有categ中的對象,然後檢查它們是否與點擊過的圖層相同,以打開或關閉它們。

這同樣適用於設置不透明度爲另一個陣列層,但你應該使用循環的索引查找層起來:

categ[i].on Events.Click, -> 
    for l, index in categ 
     if categ[i] == l 
      l.states.switch("on") 
      cards[index].opacity = 1 
     else 
      l.states.switch("off") 
      cards[index].opacity = 0 

一個完整的原型,這在工作中,能在這裏找到:http://share.framerjs.com/2yg7ix83yv1l/ 我已經用背景顏色替換了圖像,使圖層可見。

+0

你先生是一個傳奇。精美的作品 – user6880664