Il modo "moderno" aggiornato per incorporare un oggetto Flash, secondo Adobe:Flash: ExternalInterface funziona con tag sovrastante, ma non con i tag object
<object id="theFlash" name="theFlash" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000"
width="400" height="225" align="middle">
<param name="movie" value="theflashfile.swf" />
<param name="allowScriptAccess" value="always" />
<!--[if !IE]>-->
<object type="application/x-shockwave-flash"
data="getStreamFrame.swf" width="400" height="225">
<param name="allowScriptAccess" value="always" />
<!--<![endif]-->
<a href="http://www.adobe.com/go/getflash">
<img src="http://www.adobe.com/images/shared/download_buttons/get_flash_player.gif" alt="Get Adobe Flash player" />
</a>
<!--[if !IE]>-->
</object>
<!--<![endif]-->
</object>
Quando si tenta di chiamare una funzione AS3 nel file SWF, da Javascript:
var flashObj = document.getElementById('theFlash');
flashObj.someASFunction();
(e sul lato AS :)
import flash.external.*;
function someASFunction() {
//show some text
}
ExternalInterface.addCallback("someASFunction", someASFunction);
Questo non lo fa funzionano in Firefox e Chrome. Il flash funziona e carica. flashObj ottiene un riferimento all'oggetto, ma someASFunction non è definito e non viene chiamato.
Se sostituisco il tag oggetto con un tag embed:
<embed id="theFlash" name="theFlash" height="225" width="400" align="middle"
type="application/x-shockwave-flash" allowscriptaccess="always"
src="theflashfile.swf" />
Poi funziona su Firefox e Chrome (la funzione come si chiama e funzioni correttamente) - (non funziona in IE anche se).
Come mai non funziona con un tag oggetto?
Quanto "sicuro" è utilizzare il tag embed al posto del tag object? Non è obsoleto?
nota, che non è sicuramente un problema di temporizzazione - Se io chiamo la funzione AS da JS da una funzione onclick - allora i risultati sono gli stessi.
non preoccuparti di incorporamento statico, usa swfobject! – grapefrukt
Il tag embed è incluso nelle specifiche HTML5. http://html5doctor.com/element-index/#e –
Mi sto imbattendo nello stesso problema.Quando si utilizza swfobject 2.2, Chrome ottiene il tag dell'oggetto e quindi la mia funzione AS non funziona. Se utilizzo swfobject 1.5, Chrome ottiene il tag embed e la mia funzione AS funziona. Vorrei utilizzare l'ultimo swfobject, ma ho anche bisogno della mia funzione AS per funzionare. Qualche aggiornamento qui? – Nick