質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Riot.js

Riot.jsは、React.jsに似たコンポーネント指向なJSフレームワークです。非常に軽量であり、コンポーネントで設計しやすいといったメリットがあります。また、MVCのように分割できることも特徴です。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

Q&A

解決済

1回答

1597閲覧

【Riot.js】riotでjQuery UIのsliderのようなハンドルを使う方法

NobumitsuHata

総合スコア141

Riot.js

Riot.jsは、React.jsに似たコンポーネント指向なJSフレームワークです。非常に軽量であり、コンポーネントで設計しやすいといったメリットがあります。また、MVCのように分割できることも特徴です。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

0グッド

0クリップ

投稿2017/01/31 12:02

編集2017/02/01 03:25

動画の操作にハンドルを使いたいんですが、noUiSliderだと動画の再生時間に紐付けると動作がすごく遅くなります
こればっかりは自作しかないのでしょうか?

html

1<div id="form-video"> 2 <label for="video">動画を選択</label> 3 <input id="video" type="file" accept="video/*" onchange="{ changed }"></input> 4 <div class="video-wrapper" if={ preview }> 5 <video preload="auto" ref="video" onloadeddata="{ loaded }" ontimeupdate="{ playing }"> 6 <source src="{ previewSrc }" type="video/mp4"> 7 </video> 8 <div class="controls"> 9 <div class="movie-state" onclick="{ clickState }"> 10 <i class="fa fa-play click_state" aria-hidden="true"></i> 11 </div> 12 <div class="timeline" ref="timeline"></div> 13 <div class="time"> 14 <div class="now-time">{ playTime }</div> 15 <div class="slash">/</div> 16 <div class="all-time">{ totalTime }</div> 17 </div> 18 </div> 19 </div> 20 </div>

javascript

1 this.loaded = function() { 2 3 var totalSecond = Math.floor(this.refs.video.duration) 4 this.playTime = '0:00' 5 this.totalTime = timeFormat(this.refs.video.duration) 6 7 8 9 noUiSlider.create(this.refs.timeline, { 10 start: 0, 11 connect: true, 12 orientation: "horizontal", 13 step: 0.000001, 14 range: { 15 'min': 0, 16 'max': totalSecond 17 }, 18 format: wNumb({ 19 decimals: 0 20 }) 21 }) 22 23 this.refs.timeline.noUiSlider.on('start', function(e) { 24 tag.refs.video.pause() 25 }) 26 27 this.refs.timeline.noUiSlider.on('end', function(e) { 28 if (playState) { 29 tag.refs.video.play() 30 } 31 }) 32 33 this.refs.timeline.noUiSlider.on('slide', function(e) { 34 tag.refs.video.currentTime = e[0] 35 }) 36 37 }

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

turbgraphics200

2017/02/01 01:05

どのようなコードを書いたのかを記載してほしいです。
guest

回答1

0

ベストアンサー

たぶん、シークバーのような実装をしたいのだと思いますが、そんな重くなるようなところはないのですが
ontimeupdateではなくrequestAnimationFrame()使用したほうがいいです。
サンプル

投稿2017/02/01 04:51

turbgraphics200

総合スコア4267

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

NobumitsuHata

2017/02/01 09:05

noUiSliderのcreateメッソドのオプションにturbgraphics200さん同様animateを追加したところハンドルがスムーズに動き、ハンドルに合わせて綺麗に動画の再生位置が変更されました! ありがとうございます。 ontimeupdateではなくrequestAnimationFrame()使用したほうが軽くなりますか?
turbgraphics200

2017/02/01 09:11

ontimeupdateのほうがイベント発生率が低いため、シークポインタの移動がスムーズじゃありません。
NobumitsuHata

2017/02/01 12:02

ontimeupdateと違って一時停止の場合も繰り返しになりますが、ブラウザへの負担はどうなんでしょうか?
turbgraphics200

2017/02/01 12:56

負荷はontimeupdateと比べてそれほど変わらないと思います(ある意味ontimeupdateよりも低いかも)。 それと、一時停止の場合はcancelAnimationFrameして、再生時に再度requestAnimationFrame()すればいいのではないでしょうか。 もし負荷が気になるようでしたら、外部のUI使わずに、videoのcontrols使ったほうがいいと思うのですが。
NobumitsuHata

2017/02/02 05:26

ありがとうございます! cancelAnimationFrame使いました! 完璧です! turbgraphics200さんお手数おかけしました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問