こくばん.inのように、Flashで書いたものを、保存するのは、どんなことをしているのでしょうか?

ActionScriptは分かりますので、ざっくりのアルゴリズムを教えてください。

何となくぼやーと考えたのは以下です。
1.{どのチョーク、黒板消しをつかうか、座標、強さ?}を、毎秒数回保持していって、最後にその配列か何かをDBに保存している
2.出来上がった画像は、ビットマップとして、サーバサイドでファイル化してサムネール用などに使う

「1の毎秒数回保持していって~」のところなんですが、
そんな方法では処理の負荷が高いのかなと思ってしまうので、もっと違うのかなと考えています。

こくばん.in程のクオリティでなくても、単に線を描くのを再生できるようなもので結構ですので、
上のようなざっくりの流れを教えてください。

回答の条件
  • 1人2回まで
  • 登録:2008/08/28 13:46:05
  • 終了:2008/09/04 13:50:02

回答(3件)

id:yo-kun No.1

yo-kun回答回数220ベストアンサー獲得回数302008/08/28 14:18:10

ポイント27pt

当方Flashは専門外ですがこのような一般的なお絵かきソフトの話です。

概ね正しいと思いますが、通常は毎秒保存するのではなくマウス移動時ですね。

一定時間間隔だとどれだけ時間を短くしても取りこぼしの可能性は捨てきれませんし、仰るように処理の負荷が高すぎます。

従って、描画の時の操作=マウスの移動時に画面に描画しながら同時に保持していきます。

普通だとマウス移動時でなおかつマウスボタンが押されている時が描画時ですからこの時に保持していきます。

id:dingding

完成画はそれでいいですが、リプレイをするためには毎秒画像をとっておくのか、

ポイントを取っておくのかが必要ではないのですか?

2008/08/28 15:40:15
id:okmt_masaaki No.2

okmt_masaaki回答回数59ベストアンサー獲得回数62008/08/28 19:50:08

ポイント27pt

以前、同じようなものを練習がてら作ったことがあります。

マウスが動いている間、onEnterFrameで各フレームの位置座標を配列に格納し、保存時はDBにカラムを2個用意して、それぞれx座標とy座標をカンマ区切りのテキストとして保存していました。

ブラシの種類を追加したとしてもそこまで重くならないと思います。

※ある程度時間制限を設ける必要はあると思いますが。

リプレイする際はユーザーが書いた速度とは異なりますが、DBから該当データをひっぱって来れば再現できると思います。

id:dingding

なるほど。x、yを別に格納するのは思いつきませんでした。

だいぶすっきりしてきました。

2008/08/28 20:31:03
id:kujirahand No.3

kujirahand回答回数27ベストアンサー獲得回数22008/08/29 10:06:17

ポイント26pt

マウスの移動したときに、x,y の情報をとっておくだけでも、こくばん.inのように動かせますが、時間にこだわるなら、x,y,時間の3つを記録しておけば良いかと思います。

以下は、再生はしませんが、座標をマクロとして記録していく様子を解説しています。

参考にしてみてください。

id:dingding

ありがとうございます

2008/08/29 14:15:01
  • id:yo-kun
    > 完成画はそれでいいですが、リプレイをするためには毎秒画像をとっておくのか、
    > ポイントを取っておくのかが必要ではないのですか?

    ポイントというのが画面の位置のことであればそうです。
    普通は画像はとっておきません。画像データは保存するにはサイズが大きすぎ、保存する時間もかかるからです。
    ただし、サムネイル用などに完成時の画面だけを保存することはあると思います。

    お絵かき時のマウス移動時に例えば画面のどこからどこまで何色のチョーク(黒板消し)で動かしたかを保存しておきます。
    リプレイ時にはそれを一定時間間隔で順番に再現するだけです。
  • id:dingding
    どこからどこまで動かしたかを保存するのに、
    直線なら、2点あればいいと思いますが、こまかな曲線もあることを考えると、全部の点を取っているということになるのかなと考えています。
  • id:yo-kun
    曲線も曲線に見えて実は全て折れ線というか短い線の集まりで、それらの全ての端点を持っています。
    たとえ真っ直ぐ長い直線を描いても長い直線の端点だけを持っているのではなく短い線の集まりで、
    やはりそれら全ての端点を保存します。
    それでも画面の画像を保存するよりは遥かに少ないデータで済みます。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません