Я хотел бы предварительно загрузить SWF, прежде чем показывать их пользователю.
SWF являются динамическими, и у меня нет файлов FLA.
Я хотел бы сделать это, используя Javascript или jquery, если это возможно.
Я хотел бы предварительно загрузить SWF, прежде чем показывать их пользователю.
SWF являются динамическими, и у меня нет файлов FLA.
Я хотел бы сделать это, используя Javascript или jquery, если это возможно.
Посмотрите swfjsPreLoader:
Этот предварительный загрузчик принимает массив активов (jpg, gif, png, swf), который вы бы как предварительно загружать. Внутри он создаст флеш-приложение, которое делает предварительную загрузку. Вы можете определить несколько обработчиков обратного вызова. Так JavaScript узнает, когда загружаются все активы или каждый актив загружается, включая SWF файлы.
Я не знаю, если вы все еще ищете ответы, но вот оно.
Затем, в верхней части страницы или где бы вы ни загрузились, сделайте следующее:
$(document).load('/path/to/your.swf', function() {
$('#feature').slideDown(600);
$('#loader').slideUp(300);
});
И у вас это есть. Внутри загрузки вы можете поместить одну из этих счастливых маленьких фигур. Я уверен, что есть более сложные вещи, которые вы можете делать с обратными вызовами, но это будет делать предварительную загрузку.
Enjoy.
Вы можете сначала загрузить swf файл через ajax, а затем добавить объект в dom.
Таким образом, браузер будет использовать кеш, swf перезагружается из кеша и сразу готов.
Следуйте образцу того, что я говорю (я не могу дать вам образец скрипта, потому что вам нужен локальный swf для загрузки ajax).
swfobject может использоваться в функции loadObject для лучшей настройки swf-объекта.
"mySwfFunction" вызывается после загрузки swf. Его можно удалить, если не нужно.
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<title>Swf demo</title>
<script type='text/javascript' src='http://code.jquery.com/jquery-1.8.2.js'></script>
<style type='text/css'>
</style>
<script type='text/javascript'>
$(window).load(function () {
var loader = new
function () {
var loadObject = function ($el, src, callback, width, height) {
var d = document;
var s = 'object';
var obj = d.createElement(s);
obj.type = 'application/x-shockwave-flash';
if(width){
obj.width = width.toString() + 'px';
}
obj.name = 'plugin';
if(height){
obj.height = height.toString() + 'px';
}
obj.data = src;
$el[0].appendChild(obj);
};
this.loadSwf = function ($el, src, callback, width, height) {
$.ajax({
url: src,
success: function (data) {
loadObject($el, src, callback, width, height);
if(callback) callback();
},
error: function (xhr) {
//your error code
}
});
};
} ();
var mySwfCallback = function() {
$('#mySwf').show();
}
var $el = $('#mySwf');
var src = 'your_file_url.swf';
loader.loadSwf($el, src, mySwfCallback, 300, 300);
});
</script>
</head>
<by>
<div id='mySwf' style='display:none;' >
</div>
</body>
</html>
Вы можете предварительно загрузить всю страницу? Если да, вот идея с jQuery:
Лично я считаю, что лучше всего использовать вежливый загрузчик на основе Flash, так как это может быть всего лишь 5 кбайт. Код для этого не должен быть таким сложным, что-то вроде:
package
{
import com.firestartermedia.lib.as3.utils.DisplayObjectUtil;
import flash.display.Sprite;
import flash.events.Event;
[SWF( backgroundColor=0xFFFFFF, frameRate=30, height=400, width=600 )]
public class AppLoader extends Sprite
{
public function AppLoader()
{
loaderInfo.addEventListener( Event.INIT, handleInit );
}
private function handleInit(e:Event):void
{
loaderInfo.removeEventListener( Event.INIT, handleInit );
DisplayObjectUtil.loadMovie( 'App.swf', null, handleComplete );
}
private function handleComplete(e:Event):void
{
removeChild( loader );
addChild( e.target.content );
}
}
}
Здесь используется DisplayObjectUtil, доступная в github: https://github.com/ahmednuaman/as3
Используйте другой swf с предварительным загрузчиком. Смотри сюда: http://help.adobe.com/en_US/ActionScript/3.0_ProgrammingAS3/WS5b3ccc516d4fbf351e63e3d118a9b90204-7de1.html