Как получить имя SWF с помощью JavaScript? - PullRequest
0 голосов
/ 10 августа 2011

Я вставил один SWF три раза, названный video.swf.

Имена swfs: video1 , video2 и video3 .

Если я играю в SWF, я хочу получить имя воспроизводимого SWF?

Возможно ли это?

Я использую JavaScript для общения.

Ответы [ 2 ]

1 голос
/ 10 августа 2011

Мне пришлось сделать нечто очень похожее для работы в проекте для Swatch / MTV (с несколькими встроенными проигрывателями на странице и проигрыванием только одного клипа за раз (проигрывание другой клип, приостановит других и т. д.) например,

var vids = ['video/file/72066f40bfcaea46e10460585b4e4bcb.mp4','video/file/3d5db6b87f9cdacb016c9c55afed1e08.mp4','video/file/c18b04a1a548cbf20609de70a106d7cc.mp4','video/file/4568a11f3f6a7ff467a85fefe2ac08e6.mp4','video/file/b91081d37a81692194c0e34580958c51.mp4'];         for(var i = 0 ; i < vids.length; i++){
                var flashvars = {};
                flashvars.video_url = 'http://www.swatchmtvplayground.com/'+vids[i];
                flashvars.video_id = i;
                flashvars.locale = "gb";
                flashvars.skin = 'upperBackground:0xf8c3c4,lowerBackground:0xe2e2e2,generalControls:0x000000,slider:0xb58f8f,progress:0xe2e2e2';
                var params = {};
                var attributes = {};
                attributes.id = "mediaplayer"+i;
                so = swfobject.embedSWF("http://www.swatchmtvplayground.com/flash/mediaplayer/mediaplayer.swf", "mediaplayer"+i, "578", "345", "10.0.0", false, flashvars, params, attributes);
            }
            function pauseAllPlayers(exceptThisOne){
                for(var i = 0 ; i < vids.length ; i++) if(exceptThisOne != "mediaplayer"+i) document.getElementById("mediaplayer"+i).pause();
            }

для получения идентификатора Я использовал небольшой хитрость, о которой раньше не знал (выполнение JS, созданного с помощью ActionScript), используя превосходное руководство Zeh Fernando: Получение объекта HTML SWF / кода вставки из Flash. Сам фильм

НТН

1 голос
/ 10 августа 2011

Если вы используете один и тот же файл SWF три раза, вам нужно будет передать флэш-переменную, чтобы сообщить SWF, какой это экземпляр (video1, video2 или video3).Затем, когда начинается воспроизведение экземпляра video.swf, используйте ExternalInterface AS3 для вызова JavaScript и пометьте этот экземпляр SWF как тот, который воспроизводится в данный момент.

Используя SWFObject для встраивания SWF-файлов в страницу, вы можете установить flashvars в JavaScript следующим образом:

var flashvars1 = {
    name: "video1",
};

swfobject.embedSWF("video1.swf", "flashContent1", "640", "480", "10.0.0", false, flashvars1, {}, {});

var flashvars2 = {
    name: "video2",
};

swfobject.embedSWF("video2.swf", "flashContent2", "640", "480", "10.0.0", false, flashvars2, {}, {});

var flashvars3 = {
    name: "video3",
};

swfobject.embedSWF("video3.swf", "flashContent3", "640", "480", "10.0.0", false, flashvars3, {}, {});

В каждом SWF-файле у вас теперь есть переменная name, к которой можно получить доступ через LoaderInfo:

var name:String = LoaderInfo(this.root.loaderInfo).parameters.name;

И вы вызываете ExternalInterface из Flash следующим образом:

ExternalInterface.call( "videoPlaying", name );

Это вызвало бы функцию JavaScript с именем videoPlaying с именем в качестве аргумента:

function videoPlaying(name) {
    // do something with the name arg
}
...