2016-09-26 11 views
2

こんにちは私はJavaScriptとCoffeeScriptのにかなり新しいので、私は現在、プロトタイプに取り組んと同時に言語を学んでいます。アクセス他の値(framer.js)

以下のコードブロックは、私が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" 

を理解されるであろう。ここでIは、添付画像の別個のアレイを有する2つの状態(カテゴリ[]とaltCatを[])がカテゴリボタン(mainCat)を作成するループを有します。私は、カテゴリをクリックしたときに、今、私はcateg [I]を使用して、その状態を確認することができますが、それはかなり私の限界がどこにあるのですように私は、配列内のこのループを入れている

これは基本的に私のcateg []配列内のオブジェクトを複数選択肢として扱いますが、配列内の1つのオブジェクトを一度に「オン」状態にして、他の配列を別のレイヤー/ divにある別の配列に隠しておく(カードと呼ぶ)ことが必要です。

すなわち、のようなもの:事前に

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

関連する問題