I'm new to FramerJS and Coffee Script, but I'm not new to programming. I'm creating some beginner projects to learn about prototyping mobile apps in FramerJS. I'm working on a scroll app with "cards". When a card is clicked it is supposed to scale to the size of the screen. And when you tap it again it will go back into it's previous frame position.
However, what happens is when any card is clicked, the last card in the list is the one that is scaled to the center of the screen. I'm not sure what's going on exactly. Can anyone take a look at the code and see what's going on?
Thanks in advance!
# Project Info
# This info is presented in a widget when you share.
# http://framerjs.com/docs/#info.info
Framer.Info =
title: ""
author: ""
twitter: ""
description: ""
Screen.backgroundColor = "#000"
scroll = new ScrollComponent
width: Screen.width, height: Screen.height
contentInset:
top: 10
bottom: 10
left: 20
right: 10
scroll.scrollHorizontal = false
numCards = 10
cardHeight = 300
rowPadding = 20
columnPadding = 10
cardBorderRadius = 15
cardColumns = 2
cardWidth = (Screen.width / cardColumns) - (columnPadding *2) - scroll.contentInset.right
totalCardWidth = cardWidth + (columnPadding *2)
totalRowHeight = cardHeight + rowPadding
allCards = []
for i in [0...numCards]
card = new Layer
height: cardHeight
width: cardWidth
x: totalCardWidth * (i % cardColumns)
y: if i % cardColumns is 0 then totalRowHeight * (i / cardColumns); lastX = totalRowHeight * (i / cardColumns); else lastX
opacity: 1
borderRadius: cardBorderRadius
superLayer: scroll.content
html: i + 1
backgroundColor: Utils.randomColor(0.95)
card.style =
"font-size": "125px",
"font-weight": "100",
"text-align": "center",
"line-height": "#{card.height}px"
allCards.push card
for c in allCards
c.on Events.Click, (event, layer) ->
currentCard = c.copy()
currentCard.opacity = 1
currentCard.frame = c.screenFrame
c.animate
properties:
midY: Screen.height / 2
scale: Screen.width / currentCard.width
x: Align.center
y: Align.center
curve: 'spring(200,20,0)'
time: 0.2