2016-11-02 2 views
0

Возможно, это вопрос noobisch. В настоящее время я возился с Framer.js. У меня вопрос CoffeeScript;Объявление динамической переменной в цикле Coffescript

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 

У меня есть Array, и я хотел бы объявить динамическую переменную экземпляру объекта. Приведенный выше код генерирует только 5-лиевые слои (которые специфичны для Фреймера). Я не хочу, чтобы в редакторе не были самоочевидные имена слоев.

Итак, внутри цикла;

вар вещь-оранжевый = новый слой ...

вар вещь-яблоко = новый слой ... и так далее

Как я мог сделать это с CoffeeScript?

+0

Что «Редактор» вы имеете в виду? Почему вы не используете объект ('{orange: ..., apple: ...}') для этого? –

+0

Что вы хотите достичь? Что означает 'y: li * 60', не будет ли это NaN? Почему вы назначаете все типы массивов в виде текста? Какой смысл в заявлении на печать? Можете ли вы объяснить свою проблему с точки зрения ожидаемого и фактического вывода? – kba

+0

Наверное, я должен был раздеть остальную часть Фреймера-жаргона. В основном каждое значение в массиве будет добавлять к родительскому dropdownList с интервалом в 60 пикселей по вертикали. Функция печати - это способ сделать console.log в Framer Studio. Я занимался какой-то игрой. С "# {i}" является способом получения значений элементов. Framer.js является базой прототипов с IDE, называемой Framer Studio. – 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

Удобный такой пример. В вашем примере вы увидите, что в Framer Studio каждый экземпляр имеет имя li. Я хотел бы видеть их как слой-элемент-оранжевый, слой-элемент-яблоко и так далее. – myradon

+0

Вы можете сделать это, присвоив ядру явно свойство 'name:', я обновил пример, чтобы включить это. – Niels

+0

Нильс Спасибо большое! – myradon

Смежные вопросы