FramerJS: изменение порядка массива

Я не являюсь носителем английского языка, извините за мое бильярдное слово.

Я сделал такой массив..

# item layers
a = new Layer({x:20, width:80, height:80, image:"images/a.png"})
b = new Layer({x:120, width:80, height:80, image:"images/b.png"})
c = new Layer({x:220, width:80, height:80, image:"images/c.png"})
d = new Layer({x:320, width:80, height:80, image:"images/d.png"})
e = new Layer({x:420, width:80, height:80, image:"images/e.png"})
f = new Layer({x:520, width:80, height:80, image:"images/f.png"})

# item layers array - draggable
item = [a, b, c, d, e, f]
for i in [0..5] 
	item[i].draggable.enabled = true
	item[i].draggable.speedY = 0
	item[i].borderRadius = 100
	item[i].opacity = 0.5
	item[i].centerY()	

# item reorder
item[i].on Events.DragMove, ->
   if item[i].midX > item[i+1].midX
      item[i+1].animate
          properties:
             x:item[i+1].x - 100

   else if item[i].midX < item[i-1].midX
      item[i-1].animate
          properties:
             x:item[i-1].x + 100

но это не работает. при перетаскивании слоя a другие слои не перемещаются. как я могу это исправить??


person Jun-hyuk Jang    schedule 15.12.2014    source источник
comment
Непонятно, чего вы пытаетесь достичь и в чем проблема.   -  person frhd    schedule 15.12.2014
comment
Лучший способ задать вопросы по FramerJS / Framer Studio — это наша специальная группа Facebook:facebook.com/groups /framerjs   -  person zoma    schedule 20.10.2015


Ответы (1)


Доступ к слоям осуществляется через i, но i всегда 6 по событию, потому что i относится к одному и тому же (в памяти). Вы можете «захватить» слои на каждом цикле, как это.

prev = item[i-1] if i > 0
curr = item[i]
next = item[i+1] if i<item.length-1

но проблема пока останется. Первый заказ будет работать хорошо. но второй не будет работать так, как вы хотите. Свойства в анимации должны быть пересчитаны после заказа. Это звучит безумно? Что ж. Способ доступа по позиции лучше, чем по индексу массива. вот так.

person seoh    schedule 15.12.2014