StarlingでBlendModeを使った際の落とし穴
2389 ワード
はじめに
FlashのStage3Dを活用したライブラリである、StarlingフレームワークでのTipsのご紹介です。
エフェクトなどの表現を作る際、レイヤーのBlendModeをうまく活用すると効果的だと思いますが、注意しないと思わぬ落とし穴に落ちてしまうことがあります。
問題点(落とし穴)
テクスチャにATFファイルを使いBlendModeを使用すると、下図のようにアルファ部分が黒くなってしまうことがあります。左側の星がその症状、右側の星は対処済みのものです。
発生条件
- Starling 1.4.1 (2013年11月5日での最新バージョン)
- モバイルデバイスでの再生 (PCでは発生なし)
- ATFファイルをテクスチャに使用する
- BlendModeを使用する
- BlendModeを適用していなレイヤーにアルファを適用している
- Android 4.1.1 / iOS 6.1.3 / iOS 7.0.3で確認済。
解決策
- カスタムブレンドモードを作成して使用する。
// カスタムブレンドモードを作成
BlendMode.register("CUSTOM_ADD", Context3DBlendFactor.SOURCE_ALPHA, Context3DBlendFactor.ONE);
- カスタムブレンドモードを作成して使用する。
// カスタムブレンドモードを作成
BlendMode.register("CUSTOM_ADD", Context3DBlendFactor.SOURCE_ALPHA, Context3DBlendFactor.ONE);
※使うときは、お好みのMyBlendModeクラスを作るといいかもです。
まとめ
- ATF の作成の際、設定を色々変えてテストしてみましたが同様の症状でした。(-0, -2, -4, -c など) おそらく機種依存の問題ではないと思います。
- 沢山のオブジェクトに対してBlendModeを使う際は親レイヤーに一括して適用した方がお得です。
- アルファとBlendModeはつい一緒に使いたくなりますが、極力避けた方が色々な箇所でいいコトがありそうです。スケールアニメーションや、スプライトシートを活用するといいでしょう。
- BlendModeは使い方を間違えると諸刃の剣となるでしょう。
参考
Author And Source
この問題について(StarlingでBlendModeを使った際の落とし穴), 我々は、より多くの情報をここで見つけました https://qiita.com/orangesuzuki/items/39ed2bdc6545ad6cb953著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .