предварительная загрузка SWF с JQuery / JS - PullRequest
10 голосов
/ 07 августа 2010

Я хотел бы предварительно загрузить SWF, прежде чем показывать их пользователю.

SWF являются динамическими, и у меня нет FLA-файлов.

Я хотел бы сделать это, используя Javascript или jquery, если это возможно.

Ответы [ 6 ]

6 голосов
/ 19 ноября 2012

Посмотрите на swfjsPreLoader :

Этот предварительный загрузчик принимает массив ресурсов (jpg, gif, png, swf), которые вы хотели бы предварительно загрузить.Внутри он создаст flash-приложение, которое выполняет предварительную загрузку.Вы можете определить несколько обработчиков обратного вызова.Таким образом, JavaScript узнает, когда загружены все ресурсы или загружен каждый отдельный актив, включая SWF-файлы.

2 голосов
/ 24 мая 2012

Я не знаю, ищите ли вы ответы, но вот он.

  1. Создайте два div'а на своей странице.Дайте одному идентификатор, называемый загрузкой, а другому - функцию идентификатора, а функцию скрытия.Поместите свой флэш-контент в функцию и убедитесь, что скрыли функцию с помощью дисплея css: нет.

Затем, в верхней части страницы или там, где вы выполняете загрузку, сделайте это:*

            $(document).load('/path/to/your.swf', function() {
              $('#feature').slideDown(600);
              $('#loader').slideUp(300);
            });

И вот оно у вас.Внутри загрузки, вы можете поместить одну из тех счастливых маленьких вращающихся колесиков.Я уверен, что есть более сложные вещи, которые вы можете сделать с обратными вызовами, но это сделает работу по предварительной загрузке.

Наслаждайтесь.

1 голос
/ 19 ноября 2012

Вы можете сначала загрузить 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> 
0 голосов
/ 19 ноября 2012

Используйте другой SWF с preloader.Смотрите здесь: http://help.adobe.com/en_US/ActionScript/3.0_ProgrammingAS3/WS5b3ccc516d4fbf351e63e3d118a9b90204-7de1.html

0 голосов
/ 27 января 2011

Лично я думаю, что лучше использовать вежливый загрузчик на основе 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

0 голосов
/ 07 августа 2010

Можете ли вы предварительно загрузить всю страницу? Если это так, вот идея с jQuery:

http://www.gayadesign.com/scripts/queryLoader/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...