2016-11-02 2 views
0

恐らくそれはノービス問題です。現在、私はFramer.jsを操作しています。私はCoffeeScriptの質問を受け取りました。ループ内で動的変数を宣言します。

types = ["orange", "apple", "banana", "grapefruit", "pear"] 
for i in types 
    li = new TextLayer 
     text: types 
     y: li * 60 
    li.parent = dropdownList 

    print "list-item-" + "#{i}", i 

私は配列を持っているので、オブジェクトインスタンスに動的変数を宣言したいと思います。上のコードは、5つのliレイヤーを生成します(これはFramer固有です>エディター内で非自明のレイヤー名は望ましくありません)。

forループ内です。

VARアイテム、オレンジ=新しいレイヤー...

VAR項目リンゴ=新しいレイヤー...私はCoffeeScriptのでこれを達成する可能性がどのように

上 とそう?

+0

あなたはどのような「エディタ」を意味するのですか?なぜあなたはオブジェクトを使用しないでください( '{orange:...、apple:...}')? –

+0

達成したいのは何ですか? 'y:li * 60'はどういう意味ですか、これはNaNですか?なぜ、配列型全体をテキストとして割り当てるのですか?そのプリントステートメントのポイントは何ですか?あなたは予想された出力と実際の出力に関してあなたの問題を説明できますか? – kba

+0

おそらく私はFramer-lingoの残りの部分を取り除いていたはずです。基本的に配列のすべての値は、垂直方向に60pxの間隔を持つ親のdropdownListに追加されます。印刷機能は、Framer Studioでconsole.logを実行する方法です。私はいくつかの手品をしていた。 "#{i}"は要素の値を取得する方法です。 Framer.jsは、Framer StudioというIDEを備えたプロトタイプフレームワークです。 – myradon

答えて

0

私は確信していませんが、あなたがしようとしているのは、作成された各レイヤーを名前で参照することです。あなたは自分の名前の参照の下のオブジェクトに格納することでこれを行うことができます:

types = ["orange", "apple", "banana", "grapefruit", "pear"] 

# Create an empty layers object, outside of the loop 
layers = {} 

# Loop over the types array, storing the type in the variable named type 
# And the number of the current loop in the variable index 
for type, index in types 
    li = new Layer 
     html: type 
     y: index * 220 
     name: "list-item-#{type}" 
    # Store the layer in the layer object under the type key 
    layers[type] = li 

    print "list-item-" + "#{type}", layers[type] 

# Get a specific layer out of the layers array 
layers['apple'].animate 
    x: 300 

全例がここにある:http://share.framerjs.com/5owxrbz5hqse/

+0

Handyそのような例。あなたの例では、Framer Studioでインスタンスの名前がす​​べてliと表示されます。私はそれらをレイヤーリストアイテムのオレンジ、レイヤーリストアイテムのリンゴなどとして見たいと思います。 – myradon

+0

これは 'name:'プロパティを使ってレイヤーを明示的に指定することで可能です。これを含めるようにサンプルを更新しました。 – Niels

+0

Nielsありがとう! – myradon

関連する問題