Flash SWF onfinish vervangen door een afbeelding

Status
Niet open voor verdere reacties.

tijmen amsing

Gebruiker
Lid geworden
29 jul 2007
Berichten
34
Hoi,

Ik heb een flash animatie welke ik wil vervangen door een statische afbeelding wanneer deze is afgelopen.

Ik doe dit nu door in de laatste frame van het Flash bestand de volgende AS3 regels te plaatsen:
Code:
stop();
ExternalInterface.call("vervang()");

vervang() is een JavaScript functie die wordt aangeroepen en ziet er als volgt uit uit (mbv JQuery):

Code:
function vervang() {
	$(document).ready(function(){
		$('#banner').replaceWith('<img src="images/banner.png" alt="banner" width="800px" height="156px"/>');	
	});
}

Dit werkt prima in Chrome 21, IE9 en FF14, maar in de standaard browser van Android 2.2 crasht de pagina simpelweg en wordt de browser gesloten. Dit gebeurd wanneer de Flash animatie is afgelopen.
Ik heb het idee dat het komt doordat de SWF niet correct wordt afgesloten en daarom heb gekeken naar AS3 methodes als unloadandstop, maar ik krijg dit niet werkend, en weet uberhaupt niet of dit het probleem zal verhelpen..

Kan iemand me hierbij helpen?
mvg Tijmen
 
Hoi Tijmen,
Ik heb de **llen verstand van actionscript en iQuery, maar hoort de omhulling met $(document).ready(function(){...} er wel bij?
Ik stel me zo voor, dat als de flash draait, het document allang ready (ingeladen) is. Dus als de swf klaar is, al helemaal.
En ik dacht dat een $(document).ready(function(){...} alleen bedoeld was om als zelfstandige functie te werken ("als doc ready, doe dan meteen ..."; dwz getriggerd door het doc-ready signaal), en niet als functie binnen een andere.
Zou dat de crash kunnen verklaren, of zit ik er helemaal naast?

Met vriendelijke groet,
CSShunter
_____
Ik heb het idee dat het komt doordat de SWF niet correct wordt afgesloten
Als je de vervang-functie even uitcommentarieert, weet je of het aan de flash zelf of aan het javascript ligt.
 
Laatst bewerkt:
Het verwijderen van $(document).ready(function(){...} lost het probleem niet op helaas.
De pagina doet het inderdaad wel als ik de vervangfunctie er uit haal, dit had ik zelf ook al getest.
 
Aha, en wat gebeurt er als je dit doet?
[JS]function vervang() {
alert('piep');
}[/JS]
Piept ie dan, of crasht ie dan ook nog in Androïd?

  • Crash > dan zit 't toch ergens in de flash-materie die vóór de vervang-functie aan het werk is (of het ligt aan Androïd...).
  • Piep-alert > dan werkt de flash-call goed, en javascript ook, maar is het een javascript/jQuery probleem van de vervang-functie zelf (of het ligt aan Androïd...).
    Dan zou je misschien aan een mod kunnen vragen of deze de vraag verplaatst naar de javascript-afdeling van het forum (ipv deze flash-afdeling).

Heb je trouwens deze knakkers al eens bekeken: google.nl/search?q=Android+flash+crash, en staat daar niets bij?

Meer zou ik zo niet weten, helaas. *) Misschien iemand anders?

Met vriendelijke groet,
CSShunter
____________
*) O, alles voor de rest wel valid html en valid javascript?
 
Ik krijg de alert, en eigenlijk werkt eigenlijk alles wat ik in de vervang functie zet, zolang ik de flash file maar niet verwijder. Ik heb de functie herschreven in plain javascript, maar ook dit leidt tot dezelfde crash in Android.
Op google kan ik er niets over vinden en de HTML validator geeft 2 errors. Deze hebben te maken met de html5 doctype die ik gebruik. Wanneer ik switch naar HTML 4.01 krijg ik geen errors meer, maar de crash wel nog steeds..
 
Mmm, en als je het zo doet:
HTML:
<div id="flash">
    ... hier de swf
</div>
<div id="static">
    <img src="images/banner.png" alt="banner" width="800px" height="156px"/>
</div>
Met als css:
Code:
#static {
    display: none;
    }
En als javascript:
[JS]function vervang(){
document.getElementById('flash').style.display="none";
document.getElementById('static').style.display="block";
}[/JS]
(eventueel met een kleine timeout)

Dan wordt de flash niet echt vervangen, maar alleen onzichtbaar gemaakt.

Heb je trouwens al eens een setTimeout() op de huidige crashende functie geprobeerd? Misschien gaat voor Androïd het vervangen te snel van start, voordat Androïd de kans kreeg om z'n swf-einde te organiseren.

Met vriendelijke groet,
CSShunter
 
Ik heb gedaan wat je zei, en wanneer de vervang functie alleen plain javascript bevat werkt het inderdaad.
De crash ontstaat wanneer er een jQuery methode wordt aangeroepen. In mijn eerste post heb ik je niet de hele vervang functie getoond omdat me dit niet relevant leek, maar er staat ook een animatie dmv van jQuery in. Deze animatie moet dus ook pas beginnen wanneer de swf afgelopen is. Het gaat om het volgende..:

Code:
$('#container').animate({marginTop:'-208px'}, 500);
$('#cirkels').slideDown(500, function() {
$('#cirkels img').animate({ opacity:1, height:'100px', width:'100px', marginLeft:'25px', marginTop:'-50px' }, 800);
});
 
Hoi,
In mijn eerste post heb ik je niet de hele vervang functie getoond omdat me dit niet relevant leek
Foei! ;) Bij onvoorzien gedrag kan opeens alles relevant blijken te zijn... :rolleyes:

Wat gebeurt er met deze losse js-functie?
HTML:
<p><a href="#" onclick="vervangtest(); return false;">Test vervangfunctie</a></p>
[JS]<script type="text/javascript">
//<![CDATA[
function vervangtest(){
$('#banner').replaceWith('<img src="images/banner.png" alt="banner" width="800px" height="156px"/>');
$('#container').animate({marginTop:'-208px'}, 500);
$('#cirkels').slideDown(500, function() {
$('#cirkels img').animate({ opacity:1, height:'100px', width:'100px', marginLeft:'25px', marginTop:'-50px' }, 800);
};
alert('piep');
}
//]]>
</script>[/JS]
En als je de verschillende functie-onderdelen uit-commentarieert?
Maakt de $('#banner').replaceWith() de crash, of de $('#container').animate(), of de $('#cirkels').slideDown? Of allemaal? Of een bepaalde combinatie?

Met vriendelijke groet,
CSShunter
__________
PS: Heb je ook een link naar een test-pagina, om alles te kunnen zien wat er op staat? "Alles heeft met alles te maken" :)

PS-2:
O-la-la. Ik vind met google.nl/search?q=jquery+android+crash
opeens deze: forum.jquery.com/topic/jquery-animations-crash-android-3-1-stock-browser.
Zou dat het zijn? (een antwoord staat er niet bij, behalve de jQuery-animaties voor Androïd uitschakelen)
Of misschien zit er in de Google-resultaten wat anders van je gading.
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan