2014-11-13 4 views
0

나는 d3.js로 시작하고 이상한 통화 기능을 이해하지 못합니다.d3.js with coffeescript - 타이머 사용 이상한 행동

가 작동하지 않습니다 : 여기 커피 스크립트를 사용하고있어 내 코드입니다

handleTick =() -> 
    t += 0.01 
    d3.select('.ball').attr({cx: (width/2) + 100 * Math.cos(w * t), cy: (height/2) + 100 * Math.sin(w * t)})  
d3.timer handleTick 

그 일 :

handleTick =() -> 
    t += 0.01 
    console.log d3.select('.ball').attr({cx: (width/2) + 100 * Math.cos(w * t), cy: (height/2) + 100 * Math.sin(w * t)})  
d3.timer handleTick 

감사합니다!

+1

읽기 : https://github.com/mbostock/d3/wiki/Transitions#d3_timer - 두 기능의 결과는 어떻게 다릅니 까? 자바 스크립트와 달리 CoffeeScript는 'return'이 없더라도 마지막 표현식의 값을 자동으로 반환한다는 점을 기억하십시오. – user2864740

+0

explicite true return을 추가하려고했지만 여전히 Nork가 아닙니다. – Tiramitsu

답변

1

console.log 문이 무효 반환하기 때문에, 그것은 d3.select 문은 아마도 API를 기대하지 않는 무언가를 반환하는 것이 나을, 코멘트에 언급 한 바와 같이

handleTick =() -> 
    t += 0.01 
    d3.select('.ball').attr({cx: (width/2) + 100 * Math.cos(w * t), cy: (height/2) + 100 * Math.sin(w * t)}) 
    return 0 

가, 커피 스크립트는 항상 마지막 표현을 반환하려고합니다.

+0

Void는 예약어입니다. 커피 컴파일러는 오류 – Tiramitsu

+0

을 반환합니다. 반환 값 0은 위대한 – Tiramitsu

+0

아, 그래서 그것은 @ user2864740입니다. 그것을 해결하기 위해 내 대답을 변경. 감사. –