2

こんにちは、私は JavaScript と CoffeeScript にかなり慣れていないので、現在プロトタイプに取り組んでおり、言語を同時に学習しています。

次のコード ブロックは、1 つの重要なことを除いて、私がやりたいことのほとんどを実行します。どんな助けでも大歓迎です

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"

ここでは、画像の別々の配列 (categories[] と altCat[]) が添付された 2 つの状態を持つカテゴリ ボタン (mainCat) を作成するためのループがあります。

このループを配列に入れたので、カテゴリをクリックすると、categ[i] を使用してその状態を確認できますが、それが私の限界のほとんどです。

現在、これは基本的に私のcateg []配列内のオブジェクトを複数の選択肢として扱いますが、配列内の1つのオブジェクトのみを一度に「オン」状態にし、「オン」状態になると、別のレイヤー/divにある別の配列(cards []と呼びます)に他の行を隠したまま、カードの特定の行を表示する必要があります。

つまり、次のようなものです:

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

前もって感謝します!

4

1 に答える 1

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/ 画像を背景色に置き換えて、レイヤーが見えるようにしました。

于 2016-09-26T14:56:36.220 に答える