アプリ版:「スタンプのみでお礼する」機能のリリースについて

動画の再生が終わったらサイト内のfunction syori()に渡したい

APIリファレンスを見ても adPlayer.on('AdStopped', function(){}); でcallを使え以外の
説明がありません。API公開者がフランスの為、質問を投げてもうまく言葉が伝わらないようで
返信がなく困っています。
現在動画の再生はできております。
function init (api) {
if (api) {
api.on('AdStarted', function()
{console.log('AdStarted')}
);
api.on('AdVideoComplete', function()
{console.log('AdVideoComplete')}
);
adPlayer.on('AdPlaying', function(){});
} else
{ console.log('blank'); }
}
</script>
<script>(function(){var i='〇〇〇〇〇〇〇〇';document.write('<div id="'+i+'"></div>');(playerPro=window.playe||[]).push(i);})();</script>

この動画の再生が終了したらAdStoppedをfunction syori()に閲覧終了を渡したいのですが。
callの使い方が分かってないせいで相当いろいろ試したのですがにわか仕込みでは
うまく動かずご相談させていただいている次第です。

お分かりになる方いらっしゃいましたらご教授いただけると幸いです。
よろしくお願いいたします。

質問者からの補足コメント

  • 回答ありがとうございます。

    ビデオというか動画広告なのですが
    再生は、最初の記述でできていまして
    一度だけ処理なのです。
    再生の終了時にadPlayer.on('AdStopped',
    function(){});を使うとAPIよりadstoppedが
    出るんだと思うんですがそれを
    function syori()に渡したいのです。

    No.1の回答に寄せられた補足コメントです。 補足日時:2019/07/26 12:19

A 回答 (2件)

No1です



話がまったくかみ合っていないようですので、以後、回答は避けますが…


>APIリファレンスを見てもadPlayer.on('AdStopped', function(){}); でcallを使え以外の説明がありません
質問者様が一番情報をお持ちですし、他の者にはヒントも何も無いので、当たるも八卦どころではないですね。
No1にも書きましたように、通常のスクリプトであればcallを用いなくても
 adPlayer.on('AdStopped', function(){ syori(); });
で、syori()が呼ばれるのではなかろうかと推察できます。
(仕様を知らないので雰囲気からの推測のみ。スコープ内であることが条件)


>再生は、最初の記述でできていまして
>一度だけ処理なのです。
スクリプトでの処理なので、自由に記述すれば良いだけと思いますが、何らかの制限でもあって自由にならないってことなのでしょうか?
    • good
    • 0

こんにちは



HTMLでブラウザベースということで良いのですよね?

>APIリファレンスを見ても~
何のAPIなのか不明なので、その内容に関してはわかりかねますが…、
なんとなくの雰囲気で、動画の再生の制御と再生終了時に何らかの処理を行いたいものと想像しました。

通常のDOM操作でも、同様のことは可能です。
https://developer.mozilla.org/ja/docs/Web/API/HT …

>callの使い方が分かってないせいで~
呼び出したい処理が関数化されているので、特殊な状況でもない限り、普通にその関数に処理を渡せばよいはずではないでしょうか。
(以下のサンプルでもcall関数を使用していますが、それは、nodListには存在しないindexOfメソッドを利用するという目的で使用しています)


よほど特殊な処理内容でもない限り、素のスクリプトで記述したとしてもさほどのことではないと思いますので、簡単なサンプルを以下に作成してみました。
※ 動画を再生して、終了したら「次の動画に表示を切り替え再生を開始する」処理を繰り返すという単純なものです。
※ 終了時の切替え処理を、一応、function syori()として独立させてあります。
※ 再生が終了する毎に、この関数が呼び出されています。

<!DOCTYPE HTML>
<html lang="ja">
<head><title>Sample</title>
<style type="text/css">
div.box { width:90vw; margin:3vw auto; }
video { width:90vw; height:60vw; display:none; }
video.active { display:block; }
</style>
</head>
<body>

<div class="box">
<video autoplay class="active">
<source src="http://mazwai.com/system/posts/videos/000/000/20 … type="video/mp4">
</video>
<video>
<source src="http://mazwai.com/system/posts/videos/000/000/10 … type="video/mp4">
</video>
<video>
<source src="http://mazwai.com/system/posts/videos/000/000/18 … type="video/mp4">
</video>
<video>
<source src="http://mazwai.com/system/posts/videos/000/000/15 … type="video/mp4">
</video>
</div>
<div>
◇ 処理情報 ◇
<div id="info"></div>
</div>


<script type="text/javascript">
let videos = document.querySelectorAll(".box video");
let info = document.getElementById("info");

videos.forEach((e)=>{
e.muted = true;
e.load();
e.addEventListener("ended", (evt)=>{ syori(evt.target); });
});

function syori(elm){
let n = Array.prototype.indexOf.call(videos, elm);
let m = "No" + (n+1) + " Ended !<br />";
videos[n].classList.remove("active");
videos[n].pause();
videos[n].currentTime = 0;
n = ++n % videos.length;
videos[n].classList.add("active");
videos[n].play();
if(n==0) info.innerHTML = "";
info.innerHTML += m + "No" + (n+1) + " Started !<br />";
}
</script>
</body>
</html>

※ 意味が違っていたなら、スルーしてください。
※ この掲示板ではurl等が短縮表示(=リンク)に変えられてしまいますのでご注意。
※ Fx68、Chrome75にて動作確認しています。
この回答への補足あり
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!