• 締切済み

【初心者】Flash こんなことできますかね??

ただいまCC AnimateにてFlashムービーを 作成しているのですが、以下のことがどうやったら 実現できるかわからなく、悪戦苦闘しております。 最終てきにはHTML5の形式で書き出したいです。 (1) 動きを曲線的な動きにしたい為、パスを直線から 曲線にすることでなめらかな動きにできそうなのですが 複数のオブジェクト(体に手足が生えてるキャラが移動しながら 飛び跳ねてるものを作りたい)を編集するやり方がわかりません 一つ一つのオブジェクトに動きを設定しているのですが、とても 時間がかかるし、何よりパーツが離れたりと、パーツどうしがうまく連結 されません 作り方の上でいい作り方ありますでしょうか? (2) BGMにwav形式の音源を読み込もうとすると読み込めない というよりずっとローディング‥ 何故? 一部のmp3形式の音源(1分くらいのもの)も読み込めない (3) HTML5形式にした上で、音源を一度再生されたら最初に戻るボタンで 最初に戻ってもずっとループするようにしたい 現状最初に戻ると重複して再生され、最初に戻った分重複してしまう わかる方いらっしゃいますでしょうか? よろしくお願いいたします。

みんなの回答

回答No.2

おまけ、先ほどの sound_playは、通常最低2個のパラメタを使うほうがいいですよ。 sound_play(track,sound_id)です。 起動時のロードで一気にサウンドを読み込みsound_idをつくり、 再生バンクを複数初期化しておき、それをtrackとして与える。 なぜかというと、これをやらないと、BGM再生中に、SEで音源が止まる為です。なので、play_bgm(内部的に、ループになっているsound_play)と play_se(一回再生して自滅するタスクを生むsound_play)をリンクして、 sound_stopもsound_stop(track)どのチャンネルを止めるかをわかるようにする。 の方が、ベターかもしれません。 基礎クラスには、 sound_fade(例として、フェードアウトしていくタスク) や、チャンネルごとにボリューム設定(フェードタスクの親クラス) などもあれば、よりゲームっぽくなりますよ。 これで、シーン終了時、 sound_fadeout(track,speed); <- 何番トラック(チャンネル)を、どのくらいの速度で、フェードアウトさせるか?(通常1000が1秒にしておくほうが楽です) 0.5秒後音が消えていてほしいなら、500を指定するように。 後は、FPSによってその1000が今現在のいくつかを初期値で求めてしまえばOK。 モバイルだということを検出したら、FPSを抑えて、 PCだとわかったら、FPSを少しあげてみよう・・・ などとして、安定性を確保すればOKです。 相手の端末の速度は、バラバラですから。 後、sound_status(track)でそのトラックが再生中? ってのをチェックすれば、便利です。 次のシーンに行く時、サウンドがフェード中に次のタスクにいけば、 ばち!と切り替わるので、それを起点にすればいいのですよ!。 通常は、サウンドじゃなくて「画面のフェード」タスクがやることですが。 先ほどのやり方は、そういうタスクをどんどん生み出し、 拡張する為の基礎ソースですので、 そこから、拡張してみてもらえれば、いい感じに仕上がりますよ!。

staraaablue
質問者

補足

非常に丁寧な詳細コメントありがとうございます! 内容がなかなか難しく、理解するのに時間がかかりそうです(笑 とりあえずAdobeのCC AnimateにてHTML5(Canvas) 少々質問させていただけますと幸いです (1) CC Animate上でこのような -------- パスではなく、 縦方向の加算値を見ると、 -8、-4、-2、-1、0、+1、+2、+4、+8 などになっていると思います(ジャンプの動きで自然な) これをテーブルとして定義するか、計算で求めるか?で 対応できますね。 このとき座標Yのクリッピングをして、原点以下になったら、原点リセットと、 という感じにジャンプしたような動きを生み出せますよ。 -------- はどのツール(または設定等)で実現可能でしょうか? まだCCanimateに関して全然機能を使い回せてなく‥恥ずかしながら教えて頂けますと幸いです。 (2) MP3でやってみてうまくいきました、ありがとうございます! (3) 私の能力値だとこれが非常に難解で、これから読み解いていこうと思います これをCCanimate内で、追加した音源にスクリプト言語として挿入すればいい感じですかね? しれとも別のタイムラインにて追記した方がいいのでしょうか? 質問も意味が伝わっているか不安です‥ おまけもありがとうございました まずは読み解いてみたいと思います‥! サウンドの設定はなかなか奥が深いんですね!

すると、全ての回答が全文表示されます。
回答No.1

>Flashムービーを >HTML5の形式 FlashとHTML5(多分Canvas)はまったく種類が違う物なので、 思い切って、Flashを捨てて、最初から Canvasで書いたほうが、トータルでらくだと思いますよ。 (1) パスではなく、 縦方向の加算値を見ると、 -8、-4、-2、-1、0、+1、+2、+4、+8 などになっていると思います(ジャンプの動きで自然な) これをテーブルとして定義するか、計算で求めるか?で 対応できますね。 このとき座標Yのクリッピングをして、原点以下になったら、原点リセットと、 という感じにジャンプしたような動きを生み出せますよ。 (2) HTML5なので、ブラウザで実行するわけです。 しかし、ブラウザはWindowsだけとは限りません。 MACや「携帯電話」もあるわけなので、WAVではなくMP3でOKですよ。 (3) >最初に戻るボタン これがわかりませんが、リロードになっているなら、それは避けられませんが。 通常はポーリングセレクティブ方式にするほうがいいのではないかと。 scene_task() { switch (scene) { case title: /* タイトル画面の処理 */ 今は省略・・ case menu: switch(any) { case 0: /* INIT */ play_sound( MENU_SOUND) ; /* こいつ自体が鳴らすのではなく、sound_taskへ指示だけを送る。 */ /* この画面の素材を描く */ any++; break; case 1: /* MAIN */ if ( ボタンを押すなどのアクションがあった時) { any++; } break; case 2: /* KILL */ /* ここで戻るを押したら、scene=titleにするってこと。 */ stop_sound(MENU_SOUND); any=0; scene=title; break; } } } sound_task() { /* 音関連の処理 */ } main_task() { <- こいつを、ontimeoutで定期呼び出し=これ自体がFPSになります。 scene_task(); sound_task(); } (細かいプロトは省略、使用する言語にあわせて、書いてください) こういう感じで、タスクごとにループを生み出し、 そのシーン内で動くように(ページをリロードするのではなく、中の変数だけが動くように設計)すれば、安定しますよ。。 Flashは、完璧に変換したHTMLにはならないので、 最終的にHTML5というか、JavaScriptを考えているのであれば、 最初から、Canvas+JavaScriptにするほうが、趣味にもなりますし、 仕事にもなりますよ。

すると、全ての回答が全文表示されます。

関連するQ&A