8

Flash ビデオ プレーヤーでグラフィックスの不具合を再現するのが非常に難しい、奇妙で非常に困難な問題に遭遇しました。これまでのところ、Chrome でのみ発生しています。

スクリーンショット

「Enter the building」の下の灰色の四角形は、Flash Player が置かれている html div の背景色を示しています。「Where are we」リンクの下に小さい方の四角形があります。これらは、スクリプト化されたホバー アニメーションを持つスプライト (他のいくつかのスプライトと表示オブジェクトを含む) です (原点から特定の範囲内にあるランダムなポイントに向かってゆっくりと移動します)。グリッチはそれらと一緒にサイズ変更され、時々消えます。

フラッシュ コンポーネント全体が透けて見えるのは、最も奇妙なことです。ビデオプレーヤーの作成時に次のコードを実行しています。

        graphics.clear();
        graphics.beginFill(0xff00ff, 1);
        graphics.drawRect(0, 0, _stage.stageWidth, _stage.stageHeight);
        graphics.endFill();

そのため、ビデオ プレーヤーの背面に明るい色が表示されるはずですが、ビデオ プレーヤーを読み込まないと表示されることを確認しました。ただし、この明るい色は表示されず、プレーヤーを含む背景の div が透けて見えます。

これは私にはまったく意味がありません...そしてこれをデバッグする方法がわかりません。私が知っているのは、グリッチの外観は、テキストリンクが画面上でホバリングしている場所に依存するということだけです.

フラッシュは WMODE トランスペアレントにロードされます。これは、半透明の側面に拡張可能な「ウィング」があるため必要です。

編集:

www.48hourgames.com で公開されています。アカウントを作成すると、上のスクリーンショットで終わるビデオ プレーヤーが表示されます。

4

5 に答える 5

5

これは、PepperFlashプレーヤーの問題です。アドビとグーグルはこれにしばらく取り組んできました、それは彼らがフラッシュを生き続けてLinuxプラットフォームで動作することを意図している方法です。

残念ながら、PepperFlashは非常にバグがあります。今年の夏のいつか、PepperFlashがすべてのオペレーティングシステムのChromeのデフォルトのFlashプラグインになりました。それを無効にする(そしてAdobe / Googleがそれらに対処することを期待する)以外に、実際の解決策がない多くの問題があります。

Pepper Flashを無効にするには:

  • 移動:chrome:// plugins
  • 右上の詳細アイコンをクリックします
  • Flash Playerプラグインのセクションを見つけると、Flashのいくつかのバージョンがここにインストールされている可能性があります。問題があることを確認するためにChromeをインストールし、PepperFlashと2つの「通常の」バージョンのFlashを使用しました。
  • パスに「PepperFlash」が含まれているFlashプラグインを無効にします。
于 2012-12-20T16:11:50.957 に答える
4

問題を非常に確実に再現することができました。いくつかのアイデア:

  • wmode transparent定期的に問題が発生する可能性があるようです。おそらく、Flash 要素の幅を 100% にして、左右の余白にシームレスな背景を作成できます。Flash では、stage.scaleMode = StageScaleMode.NO_SCALE;. フラッシュが幅全体に広がった場合は、フラッシュを取り除くことができ、wmode transparentうまくいく可能性があります.
  • ムービーをオーバーレイする 2 つのボタンを に設定cacheAsBitmapしてみましたか?true
  • アーティファクトはムービーの最後にしか表示されないため、静止フレームの場合、ムービーがこの最終状態に達したときに に設定cacheAsBitmapするとうまくいくでしょうか?true
  • ムービーが最終状態に達したときに、同じように見える PNG 画像と交換することはできますか?
  • 2 つのボタンがまだ PNG 画像でない場合は、PNG 画像で置き換えますか?

これでダメなら…もっと絶望的。

  • おそらく、SWF からサイド メニュー (拡張 Flash 要素) を取り除いて独自の SWF にし、ムービー SWF の上に置きます。こうすれば、ムービー SWF が失われる可能wmode transparent性があり、サイド メニューでグリッチが発生しない可能性があります。
  • サイド メニューは HTML にすることができます。
    • ロールオーバー状態は HTML 要素である可能性があります。
    • または、サイド メニューで Flash 要素を呼び出して、ロールオーバー テキストを切り替えることもできます。Flash への呼び出しは、ExternalInterfaceクラス ( details ) を介して登録する必要があります。

私は何もテストするコードを持っていないので、これらはすべて暗闇の中でのちょっとしたショットです.

cacheAsBitmap関連するアイデアから始めます。次に、PNG のアイデア (ボタン、最後のフレーム) に進みます。そこから、Flash 要素の全幅バージョンを試します。これらが機能しない場合は、新しいデザインを検討することをお勧めします。それができない場合は、上記のようにサイド メニューを分割してバリエーションを持たせることにします。

于 2012-12-20T23:36:18.840 に答える
2

今日、最新のFlash Playerバージョン11.6 + Chrome 27でこの問題が発生しました。一部のコンピューターでは機能していますが、他のいくつかのコンピューターでは機能していません。これにより、問題が発生していないため、問題を追跡することが非常に困難になります。

これは Chrome ではなく Flash のバグだと思います。右クリック -> ズームイン、右クリック -> ズームアウトするとダーティ パッチが消えるからです。

それで、私は汚れた簡単な修正を探しました。

試したcacheAsBitmapメソッド : 機能しません (この修正は「黒の場所の透過性」の問題には機能しますが、この問題には機能しません)。

2つのフレーム画像の方法を試しました:どちらも機能しません(理由はわかりません)

私はついに修正する方法を見つけました(数回テストしました):

汚れた白いパッチはアニメーションの終了時にのみ表示されるため、透明な形状のトゥイーン クリップをステージに配置し、永久に実行します。そして、それは機能します。

p/s : 実際、これを回答ではなくコメントとして追加しようとしましたが、方法が見つかりません。変です。

于 2013-06-04T04:01:57.673 に答える
0

ここでも、私のビデオプレーヤーでも同じです。

クロムペッパーフラッシュのみ、およびswfが透過wmodeで埋め込まれている場合のみ。

今日、私はウェブ上で私が一緒に暮らすことができる修正/回避策/ハックを見つけました:

「単純なハックでこの問題を回避したい場合は、透明な塗りつぶしである MovieClip を描画できます。そして、すべてのフレームはその 'アルファ' プロパティを切り替えます。その塗りつぶしは透明であるため、その 'アルファ' プロパティはそうではありません。強制的に全画面再描画して MovieClip のアルファ プロパティを更新する以外は、何でもします。これにより、wmode が透過的であることによるレンダリングの誤動作が修正されます。

moueEnabled = false を追加することで、ハッキングが既存のマウス イベントに干渉しないようにすることができます。"

import flash.display.MovieClip;
import flash.events.Event;

var redrawAll = new MovieClip();
redrawAll.mouseEnabled = false;
redrawAll.graphics.beginFill(0x000000, 0);
redrawAll.graphics.moveTo(0,0);
redrawAll.graphics.lineTo(stage.stageWidth, 0);
redrawAll.graphics.lineTo(stage.stageWidth, stage.stageHeight);
redrawAll.graphics.lineTo(0, stage.stageHeight);
redrawAll.graphics.endFill();
addChild(redrawAll);

addEventListener(Event.ENTER_FRAME, function(e:Event){
    redrawAll.alpha = (redrawAll.alpha == 0)? 1 : 0;                 
});

"

ソース: https://code.google.com/p/chromium/issues/detail?id=173089#c12

于 2014-02-07T22:33:17.633 に答える