投稿
いぶき ibuki426
動画プログラムを作っているんですが、バグが発生し、エラーが出ます Out of rangeです。 MOVIEというプログラムが再生、MOVIEMAKEがテキストから動画への変換、MOVIESAMPLEがテキストデータ、MOV_MOVIESAMPLEが動画データです。全てテキストファイルです。公開キーは画像へ。
2そうだね
プレイ済み
返信[1]
親投稿
いぶき ibuki426
訂正 MOVIESAMPLEはMOVIEDATAの間違い MOV_MOVIESAMPLEはMOV_MOVIEDATAの間違い です 何故うまくいかないかわからないので見てくれると嬉しいです
0そうだね
プレイ済み
返信[2]
親投稿
あきと SideBurnsM
26行目:FOR i=0 TO (dot-1) 28行目:配列の添字の中を[I*DOT/4+J+16] プリントしてデバッグしましょう
0そうだね
プレイ済み
返信[3]
親投稿
あきと SideBurnsM
あ、元は+16じゃなくて+17でしたね。 ファイル構造のメモ書きぐらいは欲しいです
0そうだね
プレイ済み
返信[4]
親投稿
いぶき ibuki426
ファイル構造 始めの16文字がタイトル 次の1文字がユニコードでこま数 8×8ドット 16色を1ドット1文字で16進 それを4桁でユニコード1文字に変換する サンプルデータは赤色で(あか)の2こまです
0そうだね
プレイ済み
返信[5]
親投稿
あきと SideBurnsM
私のところでは最初のレスでout of rangeでなくなりました。
0そうだね
プレイ済み
返信[6]
親投稿
いぶき ibuki426
でも映像の表示がおかしいんです。
0そうだね
プレイ済み
返信[7]
親投稿
あきと SideBurnsM
ちゃんと再生できるところまで確認できました。 まず一番最初にムービーの元データに間違いがあります。2フレーム目のデータ「か」が7行しかありません。このせいでデータが足りずに配列の範囲エラーを起こしています。 コンバーターの「VIDEO_MAKE」にも間違いが一ヶ所。8行目の後ろ「-17」は-16の間違いですね。s$は改行を取り除いているので16文字目からムービーデータになるはずです。
0そうだね
プレイ済み
返信[8]
親投稿
あきと SideBurnsM
最後に再生ルーチンの「VIDEO」の修正。 22行目のFOR文を「FOR J=0 TO (DOT/4)-1」 24行目「I*DOT+J」を「I*DOT/4+J」に。 最後にに画像が正しくないのはコンバート時に4文字ずつパックしているのを逆向きに展開しなければいけないので「FOR k=0 TO 3」は「FOR k=3 TO 0 STEP -1」にすることで4ドットずつの並びが修正されました。 何もかもまとめて書こうとせずに少しずつ切り出して間違いがないかプリントしながら書いた方が混乱しないと思います。
0そうだね
プレイ済み
返信[9]
親投稿
いぶき ibuki426
ありがとうございました! しっかり表示されました。
0そうだね
プレイ済み
返信[10]
親投稿
あきと SideBurnsM
あとLOAD命令はoutの前にFALSEをつけるとダイアログで確認がでなくなりますよ。 ムービー名が16文字じゃなくても大丈夫な作りや、指定のフレームにデータが足りないときは警告を出す仕組みは必要だと思います。再生側もフレーム数とフレームに対する合計のチェックぐらいはしましょう
0そうだね
プレイ済み
返信[11]
親投稿
いぶき ibuki426
ありがとうございます。参考にさせていただきます。
0そうだね
プレイ済み