2010-07-22

ニコスクリプトとニワン語のメモ・その2(子ネタ編)

ニコスクリプト、ニワン語のメモその2。
ニコスクリプトとニワン語の構文だけなら、それぞれ以下を参照すれば大体分かる。

http://nicowiki.com/ニコスクリプト.html
http://nicowiki.com/ニワン語.html

ここでは、個人的に実験してみて得られた実際の挙動、ハマるポイントなどを中心にメモとして残す。

seek
動画内の再生位置を変更する関数。分岐動画を作る際はもう必須の関数。
しかし、かなりこの関数はクセモノである。

1.再生位置→指定位置の間のスクリプトに注意!
なんと、seekでは現在の再生位置から指定位置に一瞬でジャンプするのではなく、現在の再生位置から指定位置までシークする間のスクリプトがすべて実行される。
現在の再生位置をt、指定位置をt'とすると、

・t < t' :指定位置を先に指定
→ t, t'間にあるスクリプトを順番に実行しながらt'まで移動
・t > t' :指定位置を手前に設定
→ 0秒に戻り、0,t'間にあるスクリプトを順番に実行しながらt'まで移動

となる。
前者は、seekを実行する前にフラグを立てておき、ifで判定することで回避可能。
特に注意すべきは後者。
手前に移動する場合、0秒からスクリプトが実行されてしまうため、問答無用で保存している変数が初期化されてしまう。
データを保存しながら進めるタイプのニワン語を組む際は注意が必要。

2.エコノミーになると全く機能しない
これは個人的には未検証だが、wikiに考察されていた。
しかも、リロードをかけると飛ぶ時間も変わってしまうという、全く使い物にならない状態になる。

3.キーフレームの位置にしか移動できない
基本的にはキーフレームの位置にしか移動はできないが、swf形式ならキーフレーム以外でもseekが可能。


4.2回目以降の再生はスルー
再生が一度最後までいってしまうと、2回目以降の再生ではseekを無視する。
よくわからないがそういう仕様らしい。
1回目の再生中であれば、同じseekを何度も使うことは可能(うpした動画では5秒で答えられなかった場合に5秒前に戻るように設定している)
動画自体をリロードすることで再度有効になる。


@CM
要するに、ニコ割を再生するニコスクリプト。
ニワン語でもCM、playCMという関数が提供されていたが、自分が試した段階では上手く動作しなかった。

1.@CMは何度でも再生可能
実験した限りでは同じで動画でも、何度もニコ割を入れることができた。

2.@CMで再生中に@CMすると割り込んで再生する
基本的に、再生を開始する秒を守って再生をかけるらしい。

3.@CMで使えるのは200KB以下、544×56px、300kbps以下のswf
これは仕様。200KB以下なので、ラスタを多用するのは避けた方が良いかもしれない。


@ボタン
要するにボタン。
押すと、特定のコメントを自動で投稿する。投稿したコメントは自分だけが見れる/誰でも見れるを選択可能。
色は決められるが、デザインなどは選択不可能。

1.ユーザが「コメント非表示」設定にしてると表示されない
ボタンはコメント扱いらしい。

2.ボタンを押せる回数は1回
もう一度押すには、F5などで動画自体をリロードする必要がある。



とりあえず、今回は、こんなところで。

2 件のコメント:

匿名 さんのコメント...

キーフレームの位置しか飛べないことですが、これはSWFを使うことで解決します
SWFを投稿すれば(ニコニコムービーメーカーのSWF投稿機能を利用して投稿する)かなり自由にシークできます
byコイツ

ねぎもち さんのコメント...

コメントありがとうございます。
記事の修正をさせていただきました。