2016-09-26 4 views
2

안녕하세요 저는 자바 스크립트와 CoffeeScript가 새로 도입되어 현재 프로토 타입을 작성하고 동시에 언어를 배우고 있습니다.루프 내 커피 스크립트의 배열 (framer.js)에있는 다른 값에 액세스

다음 코드 블록은 내가 한 가지 중요한 것을 제외하고는하고 싶은 거의 모든 것을 수행합니다. 어떤 도움을 크게 I 결합 화상의 별도의 어레이 (카테고리 []와 altCat []) 2 개의 상태가 분류 버튼 (mainCat)를 생성하기 위해 루프를 여기

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" 

을 감상 할 수있다.

나는이 루프를 배열에 넣었으므로 이제 카테고리를 클릭하면 categ [i]를 사용하여 상태를 확인할 수 있지만 그 한계는 꽤 있습니다.

지금 당장이 작업은 기본적으로 내 categ [] 배열의 객체를 객관식으로 처리하는 반면, 배열의 한 객체 만 한 번에 "온"상태로 만들고 싶으면 " on "상태가되면 다른 행을 다른 layer/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