2012-12-07 24 views
8

Sto riscontrando uno strano problema di riproduzione grafica in un riproduttore video Flash !, finora solo in Chrome.Chrome Flash player crea rettangoli trasparenti nella finestra del flash

screenshot

Il rettangolo grigia sotto "Inserire l'edificio" sta mostrando il colore del div HTML che flash player è seduto in background. C'è una più piccola sotto il "Dove siamo" collegamento. Si tratta di sprite (contenenti molti altri sprite e oggetti di visualizzazione) che hanno un'animazione al passaggio del mouse (si muovono lentamente verso un punto casuale che si trova in un certo intervallo della loro origine). Il problema si ridimensiona insieme a loro, a volte scomparendo.

Qual è il più strano che vede l'intero componente del flash. Ho questo codice in esecuzione quando viene creato il videoregistratore:

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

Quindi ci dovrebbe essere un colore brillante nella parte posteriore del lettore video, e ho confermato che è lì, se non caricare il lettore video. Tuttavia questo colore luminoso non viene visualizzato, ma piuttosto il div dello sfondo che contiene il player traspare.

Questo non ha assolutamente senso per me ... e non ho idea di come eseguire il debug di questo. Tutto quello che so è che l'aspetto del glitch dipende da dove i link testuali si librano sullo schermo.

Il flash è caricato in WMODE trasparente, di cui abbiamo bisogno perché ha un'ala espandibile sul lato che è semi trasparente.

EDIT:

è vivo al www.48hourgames.com. Una volta creato un account, vedrai il video player che termina con lo screenshot qui sopra.

+0

Assicuratevi che il vostro Chrome è la versione più recente. Dal ** menu principale **, seleziona ** 'Informazioni su Google Chrome' ** e, se necessario, cercherà e installerà automaticamente la versione più recente. – arttronics

+1

Questo non ha risolto il problema. Si verifica su tutte le macchine con l'ultima versione di Chrome. – joon

+0

Ho notato che hai '_' per il palco che sembra strano. Forse si suppone di essere 'stage.stageWidth' e' stage.stageHeight' invece? In genere, * il carattere di sottolineatura * viene utilizzato per specificare una variabile. Se è necessario, forse la sintassi dovrebbe essere 'this._stage.stageWidth' e' this._stage.stageWidth'. – arttronics

risposta

5

Questo è un problema con il lettore Pepper Flash. Adobe e Google ci lavorano da un po 'di tempo, è come intendono mantenere Flash vivo e funzionante sulla piattaforma Linux.

Pepper Flash, sfortunatamente, è molto buggato. Durante l'estate di quest'anno, Pepper Flash è diventato il plug-in Flash predefinito in Chrome per tutti i sistemi operativi. Ha molti problemi che non ci sono soluzioni reali, oltre a disabilitarla (e sperando che Adobe/Google le indirizzi).

Per disabilitare Pepper Flash:

  • vai a: chrome: // plugins
  • fare clic sull'icona Dettagli in alto a destra
  • trovare la sezione plugin di Flash Player, si dovrà probabilmente diverse versioni di Flash installato qui. Ho appena installato Chrome per verificare che si trattasse del problema e ho avuto Pepper Flash oltre a 2 versioni "normali" di Flash.
  • disabilitare il plug-in Flash con "PepperFlash" nel percorso.
+1

Questo è molto utile. Ci sono informazioni ufficiali o segnalazioni di bug a cui puoi riferirmi, quindi posso rintracciarle? – joon

+0

Mi spiace di non aver mai cercato una segnalazione di bug, ma internet è pieno di segnalazioni di problemi che si verificano solo in Pepper Flash/Chrome. Alcuni dei problemi non possono essere risolti (specialmente quelli relativi alle webcam). Tuttavia, Tiffon ha pubblicato alcune buone idee nella sua risposta come soluzione che potrebbe essere utile. Soprattutto se si utilizza un valore wmode non standard, che porta il proprio insieme di problemi. –

+0

Risposta illuminante. Grazie. –

4

Sono riuscito a riprodurre il problema in modo affidabile. Un paio di idee:

  • Suoni come wmode transparent possono essere problematici su base ricorrente. Forse potresti fare in modo che l'elemento Flash abbia una larghezza del 100% e fare uno sfondo ineguagliabile nei margini sinistro/destro.In Flash, puoi impedire che riduca il tuo contenuto tramite stage.scaleMode = StageScaleMode.NO_SCALE;. Se il Flash è andato per l'intera larghezza, è possibile sbarazzarsi del wmode transparent e potrebbe essere buono per andare.
  • Hai provato a impostare cacheAsBitmap su true per i tuoi due pulsanti che si sovrappongono al film?
  • Poiché gli artefatti vengono visualizzati solo alla fine del filmato, quando si tratta di una cornice fissa, potrebbe essere utile impostare cacheAsBitmap su true sul film quando raggiunge questo stato finale?
  • Forse scambiare il film quando raggiunge lo stato finale con un'immagine PNG che sembra la stessa?
  • Forse scambiare i due pulsanti con immagini PNG, se non sono già immagini PNG?

Se questi non funzionano ... diventano più disperati.

  • Magari spoglia il menu laterale (espandendo l'elemento Flash) dall'SWF nel proprio SWF e mettilo sopra il filmato SWF. In questo modo, il film SWF può perdere wmode transparent e forse il problema tecnico non si verifica nel menu laterale.
  • Il menu laterale potrebbe essere HTML.
    • Gli stati di rollover possono essere elementi HTML.
    • Oppure, il menu laterale può chiamare nell'elemento Flash per attivare i testi di rollover. La chiamata in Flash dovrebbe essere registrata tramite la classe ExternalInterface (details).

Come io non ho il codice per testare qualsiasi cosa, questi sono tutti un po spari nel buio.

Vorrei iniziare con le idee correlate cacheAsBitmap. Quindi passa alle idee PNG (pulsanti, ultimo fotogramma). Da lì, prova la versione a larghezza intera dell'elemento Flash. Se questi non funzionano, potresti prendere in considerazione un nuovo design. Se questa non è un'opzione, passerei a dividere il menu laterale, con variazioni, come descritto sopra.

+0

Un possibile disegno alternativo potrebbe essere quello di posizionare il menu sul video: http://imgur.com/fjh3b – tiffon

2

Oggi ho riscontrato questo problema con la versione più recente di Flash Player 11.6 + Chrome 27. In alcuni computer funziona, su molti altri, non lo è, questo rende molto difficile rintracciare il problema perché non sta succedendo da parte mia.

Credo che questo sia bug di Flash, non Chrome perché quando ho rightclick -> zoom-in, fare clic destro -> zoom-out le patch sporchi scompaiono

Così mi sono guardato intorno per una soluzione rapida sporca.

Provato cacheAsBitmap metodo: non funziona (questa correzione funziona per il problema "black where transparency" ma non per questo).

provato il due immagini dei fotogrammi metodo: non funziona né (non so perché)

ho finalmente trovato un modo per risolvere (testato più volte):

Come le macchie bianche sporche unico spettacolo quando termina l'animazione Ho messo una clip di interpolazione di forma trasparente sul palco e l'ho fatta girare per sempre. E funziona.

p/s: In realtà ho provato ad aggiungere questo come commento invece di una risposta ma non riesco a trovare un modo per farlo, è strano.

+0

Il mio SWF in chrome è impostato su wmode = transprent e stavo ottenendo il nero dietro PNG trasparenti. Questo ha iniziato a succedere per me in un particolare progetto. Ho trasformato il PNG in un clip filmato e impostato 'cacheAsBitmap' su true e per me ha corretto lo sfondo nero – Ronnie

0

Ho riscontrato questo problema oggi sul mio Google Chrome 31.0.1650.63 mentre giocavo a Jigsaw. Normalmente non uso questo browser, quindi il flash dovrebbe funzionare esattamente allo stesso modo in ogni browser, quindi sono rimasto un po 'sorpreso nel sentire che i rettangoli bianchi si sovrapponevano per tutto il mio gioco. Impostando il wmode su opaco invece che trasparente, risolto questo problema.

0

stesso qui, anche nel mio videoplayer.

solo in flash al pepe cromato, e solo quando il swf è incorporato con wmode trasparente.

Oggi ho trovato un fix/workaround/incidere sul web, che si posso vivere con:

"Se vuoi per aggirare questo problema con un semplice hack, è possibile tracciare una MovieClip che è un riempimento trasparente e ogni fotogramma alterna la proprietà 'alfa'. Poiché il suo riempimento è trasparente, la sua proprietà 'alfa' non fa nulla, eccetto forzare il ridisegno a schermo intero per aggiornare la proprietà alfa di MovieClip. trasformare correzioni qualsiasi rappresentazione malfunzionamenti dovuti a wmode essere trasparente.

aggiungendo moueEnabled = false si garantisce l'hack non interferire con gli eventi del mouse esistenti"

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;     
}); 

"

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

Problemi correlati