■Flashのビットマップ関連のバグ(もしくは仕様)

Flashでビットマップ画像を扱う場合には、その特性に注意する必要があります。
1つは、基準点の縦横ラインが二重化されてしまうこと。
もう1つは、15bit(16bit)カラーモード時に自動的にディザがかかる場合とかからない場合があること。

この問題にはFlashがバージョン8になってようやく解決という長い歴史があります。
バージョン8のパブリッシュならばこのことを無視して制作できますが、HCTLでは安定性の良いバージョン5互換のパブリッシュを使用しますのでちょっと面倒ですが理解と対応をしましょう。


まず、基準点の縦横ラインが二重化される現象を説明します。

赤いエッジを持つ最小チェッカー模様の絵を表示してみます。
この絵は非常に現象を確認しやすいです。

分かりやすいように2倍の大きさで表示していますが、1dot単位のチェッカー模様です。

これをムービーにするとこのようになってしまうことがよくあります。

古いFlashプラグインを使っている場合、なったり、ならなかったりします。 (オブジェクト同士の重ね合わせや、アルファや着色等の効果をつけた場合によく起こります)
普通の絵の場合、やや膨らんだように見えてしまいます。

これを回避するために、ビットマップは必ずシンボル化し、基準点は右下にするわけです。
中心点までが左下である必要はないので、中心点は扱いやすい位置にに移動しておくのが良いでしょう。


次に15bit(16bit)カラーモード時の自動的なディザの説明をします。

白から黒へのグラデーション画像を2本表示しています。
左が全く効果をつけていないもので、右が何らかの効果をつけたものです。

左は段階が分かってしまいますが、右はディザが入ってなめらかなグラデーションになっています。

拡大、縮小、回転、着色、アルファ等ほとんどの効果でディザが入りますが、何もしていないとディザが入りません。

これを回避するために、そのまま表示するだけの場合でも、カラー効果として「高度な設定」のBのみ+1するわけです。


なぜこの効果を入れるかというと、この効果が一番元画像を変化させないからです。
(アルファ100% や、着色0% ではディザが入ってくれません)

15bit(16bit)カラーモード時の不具合はビットマップの扱い以外でも起こります。
アルファゼロでも輪郭が見える、マスクレイヤーの範囲外でも輪郭が見える...などです。
このような場合は、
レイヤーの最上層にステージを完全に覆うようなグラフィックオブジェクトを置き、
そのグラフィックオブジェクトのアルファをゼロにする。
これで解消できます。
この対処を行えば処理が重くなりますが、ビットマップに関して個々にB+1の処理をする必要もなくなります。