Проблема глубокого связывания Flash Player - PullRequest
0 голосов
/ 14 июля 2009

Я работаю над этим проектом Flash, и я создал SWF, где все ресурсы экспортируются в кадр 5, а первый кадр содержит предварительный загрузчик. Когда предварительный загрузчик заканчивается, он переходит к кадру 10, где начинается фактический сайт. Это прекрасно работает.

Тем не менее, в каждом браузере, который я тестировал до сих пор (FF, IE, Chrome и Safari), когда я помещаю # в URL, поведение выглядит так, что браузер сначала загружает весь SWF, а затем начинает его проигрывать. в результате чего для загрузки SWF-файла (пустой экран) требуется некоторое время, загрузчик запускается со 100%, а затем SWF-файл продолжается на сайте.

Буду признателен, если кто-нибудь сможет подтвердить это поведение и любой вклад, чтобы пролить свет на эту проблему.

UPDATE:

Спасибо rhtx за указание на это раздражающее поведение Flash Player. В некотором смысле я могу понять, почему это так, но это работает, только если вы снимаете линейные фильмы, чего я не делаю. В настоящее время это означает, что мне нужно создать метку для каждого местоположения глубокой ссылки в первом кадре, что, конечно, невозможно, если ваш путь зависит от содержимого.

Есть ли способ преодолеть эту вторую проблему?

Ответы [ 4 ]

2 голосов
/ 15 июля 2009

У меня была довольно сумасшедшая проблема с написанием и чтением локальных SharedObjects, когда в URL был символ #. Это было больно, и я никогда не мог полностью прибить это. Не то, что вы имеете дело, но я могу подтвердить, что FP может действовать по-другому в некоторых случаях, когда в URL есть «#».

Я думаю, , что может случиться в вашем случае, это то, что Flash Player ищет привязку из-за символа '#'. Я предполагаю, что он продолжает искать до тех пор, пока не будет загружен весь SWF-файл, и обнаруживает, что нигде в SWF-файле нет привязки, чтобы он соответствовал.

Вы можете попробовать что-то вроде этого:

Добавьте новый слой в FLA на основной временной шкале. На первом кадре создайте привязку (добавьте ключевой кадр, присвойте имя кадру и выберите опцию «Привязка», когда вы его назовете). Попробуйте снова загрузить свою страницу, но поставьте имя якоря после символа хеша. Если он загружается так, как хотелось бы, то, возможно, я что-то догадываюсь.

Надеюсь, это поможет.

1 голос
/ 04 февраля 2010

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

Rhtx на помощь ..

Не совсем так, как должно быть, но я вполне доволен тем, как это работает ..

То, как я это сейчас реализовал, это то, что у меня есть привязка типа метки кадра с именем «loading» в кадре 1 (в кадре 2 находится мое приложение).

Затем я использую кусочек javascript для загрузки своего флэш-сайта, который в основном делает это:

//pseudo javascript
var path = "";
function buildFlash() {
   path = location.hash.length > 1 ? location.hash.substr(1) : "";
   location.hash = "loading";
   $(document).ready(onDOMReady); //could probably directly load the swf now
}

function onDOMReady() {
   swfobject.embedSWF(... with path flashvar ...);
}

Причина, по которой это работает для меня, заключается в том, что я вызываю функцию ExternalInterface ("setPath", путь) из флэш-памяти, чтобы установить хэш, который, в свою очередь, также передает путь к googleanalytics.

Человек, посещающий URL http://www.site.com/#about/, увидит загрузку url / # во время загрузки сайта, когда загрузка завершится, приложение флэш-памяти определяет, куда пользователь должен перейти, и соответственно изменяет URL.

1 голос
/ 20 июля 2009

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

Хотя кажется, что вы не используете flex, я не удивлюсь, если эта ошибка повлияет и на чистую вспышку as3.

Ошибка была недавно закрыта. Решение: создайте небольшой предварительный загрузчик SWF для загрузки вашего основного SWF (например, asperous.us).

Также см. в этом с. q & a .

1 голос
/ 14 июля 2009

Вы можете создать SWF-контейнер, единственной задачей которого является загрузка реального SWF-файла. Таким образом, не имеет значения, будет ли файл SWF на странице полностью загружен перед запуском, поскольку его размер будет всего несколько килобайт.

...