나는 cyclejs 공부하고 div mobabble 만드는 방법을 다루는 몇 가지 문제가 있습니다. Cyclejs 및 x 및 y로 요소 이동
, 나는 내가 계산해야 3 개 이벤트를 격리했다 시작하려면- mousedown
- 와 mouseUp 목표는지도가 다운되었을 때 이동을 생산하는 것입니다
다음은 내가 가지고있는 것입니다 :
import {div} from '@cycle/dom'
import xs from 'xstream'
const getStyle = left => top => {
return ({
style: {
position: 'absolute',
left: left + 'px',
top: top + 'px',
backgroundColor: '#FF0000',
cursor: 'pointer'
}
})
}
function intent(DOMSources) {
const marble$ = DOMSources.select('.marble')
const marbleDown$ = marble$.events('mousedown')
const marbleMove$ = marble$.events('mousemove')
const marbleUp$ = marble$.events('mouseup')
return {marbleDown$, marbleUp$, marbleMove$}
}
function model({marbleDown$, marbleUp$, marbleMove$}) {
return xs.combine(marbleDown$, marbleMove$)
.map(([marbleDown, marbleMove]) => marbleMove)
.map(ev => ({x: ev.pageX, y: ev.pageY}))
.endWhen(marbleUp$)
}
function view(state$) {
return state$
.startWith({x: 0, y: 0})
.map(value => div('.marble', getStyle(value.x)(value.y), 'Move me ! ' + value.x + ' - ' + value.y))
}
export function Marble(sources) {
const changes$ = intent(sources.DOM)
const state$ = model(changes$)
const vTree$ = view(state$)
return {DOM: vTree$}
}
모델 부품에 문제가있는 것 같습니다. div와 mousedown 및 it에 입력하고 요소를 이동하면 요소를 위아래로 이동하지 않고 아래로 이동하고 오른쪽으로 이동할 수 있습니다.
내 두 번째 문제점은 내 마우스로 부천을 떠날 때, 내가 다시 초점을 맞출 때 계속 움직이는 것입니다.
나는 나쁜 것을 놓치고있는 것 같습니다. 당신이 왼쪽으로 마우스를 이동할 때
기능간에 추가되었습니다. Rxjs의 takeUntill과 동일합니다. 자세한 정보는 CycleJS 자동 완성 검색 예제를 확인하십시오. 귀하의 질문은 내가 함수 사이에서 찾을 수 있습니다, 감사합니다 :) –