• ベストアンサー

Flashでアルファが効かない

文字のフェードイン・フェードアウトを設定するため、アルファを利用してますが、今まではきちんと作動したのに、今回に限り、ムービープレビューで見ると、アルファが反映されてません。制御→再生ではうまく見えますが、制御→ムービープレビューではうまくみえません。何か根本的な環境設定でしょうか?Flash 9でaction script2.0で制作してます。こんなの初めて、パニックです。有識者の方々、ご指導の程、よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • BlurFiltan
  • ベストアンサー率91% (1611/1754)
回答No.1

まず, 推測されるそうなる原因と理由です。 ムービープレビューはプレビューであって,実際はどうでも良い物ですが, ムービープレビューでなく, 本当にパブリッシュしてブラウザで閲覧してもおそらく同じ現象になるのではないかと思います。 「『テキスト』が『テキストデータ』としてFlash 内に存在する場合」 はそうなります。 「『テキスト』が『テキストデータ』としてFlash 内に存在する場合」 とは,どういう場合かと言うと, テキストが "静止テキスト" であるのに, フォントの名前の前に 「_ 」 が付いているデバイスフォントを使用している場合です。 デバイスフォントの具体例は 「_明朝」「_ゴシック」「_等幅」 など前に「_ 」 が付いているフォントのことです。 また, テキストが "テキスト入力" や "ダイナミックテキスト" になっている場合も, 通常はそうなります。 結局,Flash の単純なアルファとは, 「テキストデータ」 にアルファをかけるのではなく, 「画像(この場合シェイプ(いわゆるベクタ))データ」 にアルファをかけるのです。 テキストが "静止テキスト" であって, なおかつデバイスフォントを使用していない場合は, SWF にパブリッシュする時点で, 「テキストデータ」 は 「画像(この場合シェイプ)データ」 になります。 したがって, エンドユーザはそのフォントを持っていなくても, Flash の静止テキストは普通文字化けもしませんしレイアウトも壊れません。 パブリッシュの時点で画像化されるのですから, 文字化けが起こらないのは当然のことですし,閲覧環境によって文字の大きさが変わることはないのも当然のことです。 しかし, "静止テキスト" であるのに,デバイスフォントを使用している場合は, エンドユーザのPCにあるフォントデータを参照してFlash上に表示させます。 このフォントデータは「画像(この場合シェイプ)データ」 ではないのでアルファなどはかかりません。 また, テキストが "テキスト入力" や "ダイナミックテキスト" になっている場合, そのテキストはどうなるのか(どう入力されるのか)はわかりませんから, パブリッシュの時点で 「画像(この場合シェイプ)データ」 に変換するのは無理です。 したがって通常はアルファはかかりません。 以上が,そうなる原因とその理由です。 ====================== 次に対処法ですが。 テキストが "静止テキスト" である場合は, デバイスフォントを使用せずに, 「MS明朝」とか「HGP平成ゴシック」とか「Osaka」とか「ヒラギノ」とかの普通のフォントを使用するのがベターだと思います。 それで解決する場合は,以下は関係ありません。 もし, テキストが "テキスト入力" や "ダイナミックテキスト" にしなければならない場合, 解決策の1つは普通のフォントにして,そのフォントを埋め込むことです。 テキストを選択して, 下の「プロパティインスペクタ」からテキストを普通のフォントにして, [埋め込み...] ボタンをクリックして,指定したエリア内のフォントを埋め込みます。 こうすると, 「テキストデータ」 は SWF 内に「画像(この場合シェイプ)データ」 として埋め込まれます。 しかし, アルファベットや数字くらいでしたら大した容量にはなりませんが, 「日本語(すべて)」などを選んだ場合は, そのフォントデータのアウトラインデータ(画像データ)が全て埋め込まれますから, それだけで(他に何も用意しないテキストフィールド1つだけで), 数MB の SWF になってしまうことはありえます(というかたいていそうなる)。 ですから, 日本語を表示するような場合や,日本語を入力させる場合は使わないのが普通です。 ただ, 埋め込まれていないフォントでも, フォントにAS(ASは必須)でマスクをかけて(setMask), そのマスクにアルファをかけると文字にアルファがかかりますから, そういう方法で対処するのも1つの方法です。 Google 検索例: 「setMask ダイナミックテキスト」 http://www.google.co.jp/search?hl=ja&q=setMask+%E3%83%80%E3%82%A4%E3%83%8A%E3%83%9F%E3%83%83%E3%82%AF%E3%83%86%E3%82%AD%E3%82%B9%E3%83%88 また,BitmapData クラスを使用して, テキストデータを一旦 BitMap 画像に変換して, その 「画像(Bitmap)データ」 にアルファをかけるという手段でもできます。 Google 検索例: 「BitmapData フォント」 http://www.google.co.jp/search?hl=ja&q=BitmapData+%E3%83%95%E3%82%A9%E3%83%B3%E3%83%88 そういう難しい(というかまわりくどくて厄介)な方法を使うと, フォントを埋め込まない場合でもアルファをかけることは可能です。

sea-bass
質問者

お礼

いやいや、完璧な回答でした。有難う御座います。たしかに全てのフォントを昨日入れ替えてました。また、文字を画像として外部から取りん込んで、アルファをかけたら、きちんと反映されました。実は、結構この「教えてgoo」を利用してますが、今までで一番すっきりした回答でした。有難う御座います!

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

関連するQ&A