Для пользователей Linux, имеющих эту проблему, я создал следующий скрипт в качестве обходного пути:
Перед тем, как продолжить, вы должны убедиться, что перцовая флэш установлена для Chrome/Chromium, (flashplugin для Firefox) единственный способ проверить (без использования обходного пути, описанного ниже) - это проиграть флэш-файл в интернете. (или в Firefox, перейдите на about:plugins и посмотрите, есть ли у него “Shockwave Flash”)
#!/bin/bash
if [-z $1]; then
swf=$(ls *.swf | tail -1)
else
swf=$@
fi
html=$(echo $swf | sed 's:swf:html:g')
echo '<embed src='$swf 'width="100%" height="100%"></embed>' | sed 's:src=:src=":g' | sed 's:swf:swf":g' > "$html"
#chromium "$html" && sleep 20 && rm "$html"
#google-chrome "$html" && sleep 20 && rm "$html"
#firefox about:config & wmctrl -xa firefox && sleep 0.2 && xdotool type plugins.http && sleep 1 && xdotool key Tab && xdotool key Down && xdotool key Return && xdotool key Control+w && firefox "$html" && firefox about:config && wmctrl -xa firefox && sleep 0.2 && xdotool type plugins.http && sleep 1 && xdotool key Tab && xdotool key Down && xdotool key Return && xdotool key Control+w && sleep 20 && rm "$html"
(альтернативно совместимый с тире)
Чтобы использовать скрипт, сохраните его как swftohtml.sh (может быть любое имя, не обязательно заканчиваться на .sh) в любом месте по вашему желанию, а затем преобразовать его в выполнимую команду либо сделать псевдоним для него в bashrc, либо скопировать его в /usr/bin/. Не забудьте запустить chmod +x swftohtml.sh, чтобы сделать его исполняемым.
Скрипт, при запуске без аргументов, будет искать в текущей папке файл swf и сделает соответствующий html файл, который может быть использован для запуска этого файла swf в браузере. Если в папке более 1 файла swf, то по умолчанию он будет последним (например, если у вас есть имя файла1.0.swf и имя файла2.0.swf, то по умолчанию будет использоваться имя файла2.0.swf)
Альтернативно целевому файлу swf, вы можете ввести имя файла (или полный путь к файлу) в качестве аргумента для скрипта, и он будет использовать его вместо этого. (например, swftohtml.sh fileename 1.0.swf )
Если вы хотите полностью автоматизировать сценарий:
Чтобы автоматически открыть swf-файлы в вашем браузере и автоматизировать удаление полученного html-файла после его использования, прокомментируйте одну из следующих строк внизу сценария (в зависимости от вашего браузера):
#chromium "$html" && sleep 20 && rm "$html"
#google-chrome "$html" && sleep 20 && rm "$html"
#firefox about:config & wmctrl -xa firefox && sleep 0.2 && xdotool key Return && xdotool type plugins.http && sleep 1 && xdotool key Tab && xdotool key Down && xdotool key Return && xdotool key Control+w && firefox "$html" && firefox about:config && wmctrl -xa firefox && sleep 0.2 && xdotool key Return && xdotool type plugins.http && sleep 1 && xdotool key Tab && xdotool key Down && xdotool key Return && xdotool key Control+w && sleep 20 && rm "$html"
Сценарий теперь откроет html-файл в вашем браузере, как только он будет создан. Если в вашем браузере запущен какой-нибудь экземпляр, то он удалит html файл за 20 секунд (у вас будет достаточно времени, чтобы сказать браузеру открыть файл с помощью своего флеш-плагина). Если нет существующего экземпляра вашего браузера, файл будет удален через 20 секунд после закрытия браузера.
С помощью этого набора вы можете настроить SWF файлы на открытие с помощью скрипта, и процесс теперь полностью автоматизирован, так что вы можете открывать SWF файлы напрямую, не беспокоясь о создании (или удалении) html-файлов вручную, другими словами, он будет вести себя так, как должен был бы вести себя сейчас. (Имейте в виду, что может быть несколько угловых случаев, когда html-файл не удаляется, хотя, когда это происходит, вы можете безопасно игнорировать его)
Для пользователей Firefox:
Версия Firefox была немного хитрее, она требует установки wmctrl и xdotool. Причина этого в том, что для Firefox, чтобы проигрывать локальные swf-файлы таким образом, вам нужно отключить plugins.http_https_only в about:config, скрипт автоматически отключает его, открывает флэш-файл, а затем снова включает его, потому что это настройка, которую большинство людей, как правило, хотят, чтобы сохранить включенным. Браузер должен быть открыт перед запуском команды. Если вы считаете вероятным, что ваш браузер Firefox будет закрыт при выполнении команды, замените строку на следующую:
firefox about:config & sleep 1 && wmctrl -xa firefox && sleep 0.2 && xdotool key Return && xdotool type plugins.http && sleep 1 && xdotool key Tab && xdotool key Down && xdotool key Return && xdotool key Control+w && firefox "$html" && firefox about:config && wmctrl -xa firefox && sleep 0.2 && xdotool key Return && xdotool type plugins.http && sleep 1 && xdotool key Tab && xdotool key Down && xdotool key Return && xdotool key Control+w && sleep 20 && rm "$html"
. Теперь браузер будет запущен за 1 секунду до выполнения остальной части сценария. (Может понадобиться настройка для более медленных компьютеров).
Версия скрипта Firefox всегда будет удалять файл через 20 секунд.
Тестирование производительности:
Я сделал некоторые рудиментарные тесты производительности, и вот мои результаты:
- Chrome/Chromium Pepper Flash (PPAPI):
- Adobe Flash Projector (NPAPI)(Wine): Fast
- Firefox Flashplugin (NPAPI): Медленнейшая
Что касается стабильности, есть угловые случаи, когда PPAPI будет сталкиваться с ошибками/ошибками, которых нет у NPAPI, но они редки.
Производительность между Pepper Flash и Flash Projector была довольно мала (это заметно, но едва ли), в то время как производительность флэш-плагина Firefox по каким-то причинам была заметно медленнее, чем у остальных.
Таким образом, если игра во флэш-игры является целью, я бы рекомендовал использовать хром с перцовой флэш-памятью, установленной над остальными, в общем случае. Для других задач это вряд ли будет иметь значение.