현재 리 액티브 바나나와 SDL을 사용하는 작은 게임을하고 있습니다. 목표는 주로 반응성 바나나와 FRP에 대해 더 많은 것을 배우는 것이므로 동적 인 전환을 사용하여 게임 개체 모음을 설정하려고 시도했지만 지금까지는 큰 성공을 거두지 못했습니다.리 액티브 바나나의 다이나믹 이벤트 스위칭
이벤트 전환을 사용하는 유일한 예인 Bartab 예에서 컬렉션의 새 항목 생성을 궁극적으로 트리거하는 이벤트는 내부 이벤트를 사용하는 대신 이벤트 네트워크 외부에서 수집됩니다. 내 질문은 : 이것을 수행하는 유일한 방법인가 아니면이 예를위한 특별한 경우인가?
반응성 바나나에서 사용되는 동적 이벤트 전환의 예가 더 있습니까?
나는 모멘트 t (Anytime Behavior a)를 얻었으므로 execute를 사용하여 Event t (Anytime Behavior a)를 만든 다음 컬렉션을 운반하는 Behavior를 차례로 업데이트하는 데 사용합니다. 모멘트 t (애니 타임 동작 a)는 트리거링 이벤트에서 생성 된 동작에 대해 trimB를 사용하여 생성됩니다. 이 트리거 이벤트가 이벤트 네트워크에서 시작된 경우 "Could not dell (t ~ t1)"오류 메시지와 함께 컴파일되지 않습니다. 정확히 ~는 무엇을 의미하는지 모르겠지만 이벤트 네트워크의 두 Frameworks 값 (t)과이 새로운 순간 값이 다르기 때문에 분명히 오류가 발생합니다.
짧은 이야기로, 반응 바나나에서 이벤트 스위칭이 어떻게 작동하는지 이해할 수 없으며 이유가 확실하지 않습니다. 이론적으로는 비교적 직설적이어야합니다.
편집 : 나는 단순히 새로운 동작을 만들 정상적인 이벤트를 사용하여 예로부터 newentry 파일/eNewEntry를 반영하려고 노력
-- Event Network
-- ==========================
setupNetwork :: forall t. Frameworks t => (EventSource Command, EventSource()) -> IORef SpriteMap -> GameMap -> Moment t()
setupNetwork ((addHandlerE, _), (addHandlerT, _)) sprites map = do
-- Input Events
----------------
eInput <- fromAddHandler addHandlerE -- Player Commands
eFrame <- fromAddHandler addHandlerT -- Event on each Frame
let
[...]
eSpawnEvent :: Event t (DSCoord)
eSpawnEvent = extractCoord <$> eLeftClick
where
extractCoord (LeftClick c) = c
spawnPos :: Frameworks s => Moment s (AnyMoment Behavior DSCoord)
spawnPos = trimB $ stepper (0,0) eSpawnEvent
eSpawnPos <- execute $ (FrameworksMoment spawnPos <$ eSpawnEvent)
[...]
. 이렇게하면 spawnPos에서 "추론 할 수 없습니다 (t ~ s)"오류가 발생합니다.
Edit2가 : 그것은 작동하지만, 지금 같은 오류가 나는 이벤트를 생성하는 실행 사용하는 라인에 온다
. "t을 추론 할 수 없습니다 ~ T1은"
에 위반 라인을 변경하는 것입니다? –
질문을 코드 예제로 업데이트했습니다. – AsgarZigel