Elm에서 Video Element 및 Audio Element의 Media Event를 다루는 방법
12446 단어 Elm
h tp // // 에 lm-㎁ g. 오 rg/try로 복사하면 현재 탐색 시간과 비디오 재생 상태를 얻을 수 있습니다.
import Html exposing (..)
import Html.Events exposing (..)
import Html.Attributes exposing (..)
import Json.Decode as Json
main =
Html.program
{ init = init
, view = view
, update = update
, subscriptions = subscriptions
}
-- MODEL
type alias Model = { videoState : String
, currentTime : Float }
init : (Model, Cmd Msg)
init = (Model "loading" 0, Cmd.none)
-- UPDATE
type Msg = CurrentTime Float
| Loading
| Playing
| Paused
| Seeking
update : Msg -> Model -> (Model, Cmd Msg)
update msg model =
case msg of
CurrentTime currentTime ->
({ model | currentTime = currentTime }, Cmd.none)
Loading ->
({ model | videoState = "loading" }, Cmd.none)
Paused ->
({ model | videoState = "paused" }, Cmd.none)
Playing ->
({ model | videoState = "playing" }, Cmd.none)
Seeking ->
({ model | videoState = "seeking" }, Cmd.none)
-- SUBSCRIPTIONS
subscriptions : Model -> Sub Msg
subscriptions model = Sub.none
-- VIEW
targetCurrentTime : Json.Decoder Float
targetCurrentTime = Json.at ["target", "currentTime"] Json.float
view : Model -> Html Msg
view model =
div [] [
video [ src "http://www.sample-videos.com/video/mp4/720/big_buck_bunny_720p_1mb.mp4"
, on "timeupdate" (Json.map CurrentTime targetCurrentTime)
, on "seek" (Json.map CurrentTime targetCurrentTime)
, on "seek" (Json.succeed Seeking)
, on "seeking" (Json.succeed Seeking)
, on "seekend" (Json.succeed Paused)
, on "playing" (Json.succeed Playing)
, on "play" (Json.succeed Playing)
, on "pause" (Json.succeed Playing)
, on "ended" (Json.succeed Paused)
, on "loadedmetadata" (Json.succeed Paused)
, controls True] [],
div [] [text (toString model.currentTime)],
div [] [text (toString model.videoState)]
]
소관
Elm은 입출력이 증가하면 Msg가 어려울 것이라고 생각했습니다 (초등학생의 감상
참고
Reference
이 문제에 관하여(Elm에서 Video Element 및 Audio Element의 Media Event를 다루는 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/legokichi/items/ae6b6afcb83cc5bdfba0텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)