Q&A
スレ内での質問、答えを必要あるなしに関わらずまとめてみました。おもに技術関係。

CGデータの受渡し話(イラレ>フラッシュ)
作画する時の注意
文字を一つずつ表示させるのにASではどうすれば?
BGMイントロ部分とメインループ部分における技術的な話

CGデータの受渡し話(イラレ>フラッシュ)
451 :114 :02/06/23 22:29 ID:???
    FLASH塗りフォーマットの方が動かしやすいんですよー。
    JPEG、GIFなんかのビットマップデータだと
    
    ビットマップをFLASHに取り込み
    ↓
    原画をトレースして線をパスに取り直し(あとは一緒)
    
    っていう作業が必要になるんで、原画の方が最初から立ち上げられたほうが
    二度手間にならずにすむし、ほかの人間が作業することによる絵荒も防げたりします。
    パスに取り込んでしまえば、塗り作業を分業できたりしますし。
    
    PS。
    イラレのベクターデータならFLASHで読み込めるらしいです。
    僕の環境で試したところどうもできなんです。
     OS:WIN2000
     イラレvar9
     FLASHvar5
    なのですが。
    
    これが再現できれば絵師の方にFLASH覚えていただく手間省けると思うのですが、、    

454 :軟骨 ◆flash7zc :02/06/23 22:49 ID:???
    >>451
    eps形式にすれば読めるはずですが…。
    ファイル経由した方法は解らないです。やったことない。
    
    俺は普段、
     イラレ:絵を選択、クリップボードにコピー
        ↓
     FLASH:新規グラフィックオブジェクトを作成、ペースト
    ってやってますが、特に問題はないです。
    レイヤー構造が崩れるくらいかなぁ、問題と言えば。

462 :114 :02/06/24 00:54 ID:???
    塗りのへ段取りですが、
    
    塗り職人の方が、、
    1、ベクターものが扱えない場合。
      どなたかにJPEG等のビットマップにて塗ってもらい、それをトレース素材にして
      FLASHを使える人間が完成したパスデータに色を反映。
    2、ベクターものが扱える場合。
      完成したパスデータをイラレ、FLASH等で直接塗り。
    
    の2パターン作業があると思います。

666 :(2/2)105 FlashXp6 ◆FlashO/IB6 :02/10/26 03:01 ID:???
    おまけ
    幾つか?な単語が出てるかもしれないので簡単に流れとかの補足を。
    流れで、FLASHで作品を作るという事から、
    なるべくキャラクタが動くと良いねという話になっています。
    で、それを実装する為に素材加工の工程が存在します。
    (この部分、今はあまり拘らない方がいいのでは?という話が >655 の下二行)
    で、トレースというのは 下絵を元に人がパス線で絵を再構築する事です。
    (FLASH で動かすには非常に都合の良いデータ形式になります)
    で、ビトマプトレス とは FLASH にある機能で、元絵を油絵っぽい感じの
    パスデータに変換してくれる機能です。
    (独特の味が出るのですが綺麗な線とかは…。所詮オートで作成されるデータです)

作画する時の注意
588 :105 ◆FlashXp6 :02/09/05 01:01 ID:???
    動作パーツ毎に別レイヤでないと話にならないです。
    目パチをさせたい場合 目だけ別レイヤで描きます。
    アニメさせる場合、そこのレイヤを差し替えでアニメパタンを作成します。
    
    で、素材受渡しです。
    FLASH 及び自分が使用している FireWorks では .psd を読み込め無いので
    レイヤ毎に .png(24bitα) で出力してもらい受け取りました。
    (.jpg でレイヤ毎のデータを受け取ると、合成の際にムラが出て綺麗に合成出来なかったのです。
     各レイヤで完全にパーツ分けされている場合は問題無いかもしれませんが
     合成部分の馴染みに下絵の色が置いてある場合、致命的になります)

    上記データ形式でデータを渡してもらえば、自分が FLASH でその先のデータを作成する事は可能です。

    という訳で、基本的には動画になりそうなパーツを
    別レイヤで書く事意外には意識しなくていいと思います。
    という事は… 普通のギャルゲーフォーマットで作成という事です。

    FLASH でアニメーションを作成する際、
    ベジェ描画の方が扱い易いという話ですが(自分もそう思ってます)、
    今回の作品を作っていて、ベジェデータでなくても問題無くいけると思いますた。

606 :105 ◆FlashXp6 :02/09/11 02:39 ID:???
    >>588 で、FireWorks は .psd を読み込めないと書きましたが、
    普通に読み込めて、レイヤデータもバリバリOKでつた。

文字を一つずつ表示させるのにASではどうすれば?
528 :トテー ◆tote0hc2 :02/07/15 11:04 ID:???
    質問です。
    >>428(114さん)のように文字を一つずつ表示させるのにASでは
    どうやるんですか?
    あと本当に外部テキストからシナリオを読み込めるのですか?
    ASが貧弱なVer.4を使ってるので本当にできるか疑問なんです。

529 :軟骨 ◆flash7zc :02/07/15 14:19 ID:???
    うちはFLASH5Jですので使えるかどうか解らないですが。
    
    単純に言えば文字列を少しずつ表示させるわけですから、
    forとlengthとsubstringを使えばいけます。
    ここでstrは文字が格納されている変数、dispはダイナミックテキストです。
    for( i=0; i<=str.length; i++ ){
    disp = str.substring( 0, i );
    }
    でもたぶんこれだけだと一瞬で表示が終わってしまうので、
    どうにかしてウエイトをかけないといけないです。
    そこら辺の詳しい説明はまたの機会に。

    シナリオを外部テキストから読み込ませることはもちろんできます。
    ただ、複数の方法がありまして。
     1)巨大なテキストファイルを全部配列に読み込ませる
     2)細切れのテキストファイルを随時読み込ませる
    方法としては2)のほうがメンテやりやすいし、たぶんこっちがオススメ。

    テキストファイル内の例。
    txt=表示される文字列\t次ページで表示される文字列\tさらに次ページ(\tが現れたらそこで一度表示停止)
    select=分岐がある場合1、ない場合0
    option1=分岐がある場合の選択項目1
    opfile1=分岐がある場合、次に読み込むファイル名
    option2=分岐がある場合の選択項目2
    opfile2=分岐がある場合、次に読み込むファイル名
     :
    file=分岐がなく次のテキストを読み込む場合のテキストファイル名
    とかにしていけばいいかと。<昔DOSゲーを作ったときはこの方法でした。

530 :トテー ◆tote0hc2 :02/07/15 16:07 ID:???
    ありがとうございます
    Flash 4Jでもこんなかんじでできました。
    4JではforがなかったのでかわりにLoopを使いました。
    Set Variable:"i" =0
    Set Variable:"ward" ="こんにちは"
    Loop While (i < Length ( ward ))
    Set Variable:"i" =i + 1
    Set Variable:"message" =Substring ( ward, 0, i )
    End Loop
    一応ちゃんと機能してるっぽいけど
    じっさいに1文字ずつ表示しているか確認できないのでちょっと不安。
    ウエイトをかけるのはたいへんなのでしょうか?

531 :軟骨 ◆flash7zc :02/07/15 22:44 ID:???
    >>530
    あー、Flash4JはPascalみたいなんだなぁ(汗
    4Jは触ったことないので、想像でAS書いてみた。
    5Jの文法と混ざってて意味が解らないかも。
    
    フレーム1
    Set Variable: "i" = 0
    Set Variable: "word" = "こんにちは"
    フレーム2
    Set Variable: "message" = Substring( word, 0, i )
    フレーム10くらい(2〜10の間がウエイトというか無駄フレームです)
    Set Variable: "i" = i + 1
    if( i<= Length( word ) ){ gotoAndPlay(2); } else { stop(); }
    みたいにしてループさせるとか。

532 :トテー ◆tote0hc2 :02/07/17 15:55 ID:???
    有り難うございます。おかげさまで
    一文字ずつ表示させるのに成功しました。
    レスがおくれて申し訳ありませんでした。
    ところで外部テキストを利用する実験を行ってたんですが、
    http://totetero.hoops.ne.jp/Flash/monamix/monamixTEST.html
    こうなってるはずが、
    http://totetero.hoops.ne.jp/Flash/monamix/monamixBeta.html
    こうなってるんです。(外部テキストを読み込む方)
    なぜか外部テキストを2回以上読み込めないんです。
    読み込むファイル名を変数にしてレベルを0にしてloadvariablesを実行したのですが
    ループして戻ってきた時に2回目のloadvariablesでエラーが起きます。
    なぜだかもしわかったら教えて下さい。
    http://totetero.hoops.ne.jp/source/monamixBeta.lzh
    ソースです。(マクなのでマドでうまくいくか心配)

    533 :軟骨 ◆flash7zc :02/07/17 16:32 ID:???

    loadVariablesNum ("scene" & pass & ".txt", 0);
    で外部テキストを読み込んでいますよね?
    
    例えばscene1.txtを見ると、
    「&opfile1=2 」
    と、数字の後に余分な半角スペースが入っています。
    まず修正すべきはこの点ですね。
    全ての.txtファイルにこの余分な半角スペースが入っていました。
    これを全部取り除いてください。
    
    次に、外部ファイルの記述を見ると、
    &opfile1=2
    &opfile2=…
    となっているわけですが、これでは変数に数字+改行コードが
    読み込まれてしまうことになります。
    変数ごとに改行を入れるのをやめれば直ります。
    つまり、メッセージ以外の変数定義部分を
    &opfile1=2&opfile2=3…
    と全てを1行にまとめてしまえば良いわけです。

    あと、問題点.txtにあった、MXでパブリッシュうんぬんのやつ。
    
    なんだかMXからは文字コードセットが変わったらしいので、
    System.useCodepage=True を追加するか、
    外部テキストのエンコーディングをUTF-8にする必要が
    あるらしいです。詳しくは↓こっち。
    ttp://www.macromedia.com/jp/support/flash/ts/documents/fl0262.html

BGMイントロ部分とメインループ部分における技術的な話
536 :135 :02/07/17 22:22 ID:???
    相談です。
    ゲームで使用するBGMを
    「前奏」と「ループ」に分けて、
    鳴り始め「前奏」を一回だけ再生→ループで繰り返し
    というのは可能でしょうか。

537 :軟骨 ◆flash7zc :02/07/17 23:07 ID:???
    方法としては、BGMを入れたMCを作ることです。
    まずMC内に前奏部分を「同期:スタート」で貼り付けます。
    ちょうど前奏が終わる辺りにループ部分を「同期:スタート」で貼り付けて、
    繰り返し回数を65535とでもしておけば大丈夫。永久ループ。
    音楽を止めたい場合はstopAllSounds();でも実行すればOK。
    
538 :世界記録はカメルーンで17個 ◆1AGE/1Xw :02/07/18 18:58 ID:???
    軟骨氏の方法が効率的だと思いますが、
    あえてスクリプトで実行しようとすればこんな感じかなぁ(動作確認済み)
    
    soundPrelude = new Sound();
    soundPrelude.attachSound("sound1");

    soundPrelude.start(0, 1);
    _root.onEnterFrame = function() {
    soundPrelude.onSoundComplete = function() {
    soundPrelude.stop();
    soundLoop = new Sound();
    soundLoop.attachSound("sound2");
    soundLoop.start(0, 999);
    };
    };
    
    sound1が前奏、sound2がループサウンドで、
    それぞれサウンドファイルをライブラリに読み込んだとき、リンケージとして付けた名前です。
    ちなみにFlashPlayer6じゃないと動きませぬ。

539 :世界記録はカメルーンで17個 ◆1AGE/1Xw :02/07/18 19:01 ID:???
    よく考えたら6行目の
    soundPrelude.stop();
    は、いらないですね。