Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   Повторная загрузка флешки (http://www.flasher.ru/forum/showthread.php?t=86592)

Варабейчик 18.10.2006 21:44

Повторная загрузка флешки
 
Здравствуйте опять, не успел я справиться с первой проблемой, как появилась ещё одна:

Сделал флеш меню, повесил на каждую страничку, но когда я перехожу из одного раздела в другой флешка грузится каждый раз по новой, для каждого раздела. Буду благодарен, если вы поможете мне справится с этим.

П.С. Сайт на хтмл, читал, что надо руки отрывать тем, кто флеш-меню на хтмл вешает, однако по другому не умею.
П.П.С. Поиск юзал, но проблему не решил.

Спасибо.

pkfun 18.10.2006 21:55

Цитата:

Сообщение от Варабейчик
Здравствуйте опять, не успел я справиться с первой проблемой, как появилась ещё одна:

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

BigDan 18.10.2006 22:21

По идее она не должна грузатся заново, она обычно сохраняется в кеше.

Варабейчик 18.10.2006 22:34

Если я например перезагружу страницу с этой флешкой то она загрузится из Кеша, но если я зайду в ДРУГОЙ раздел, где есть эта же флешка она будет грузиться по новой. :(

mr.N 18.10.2006 22:57

Очень простой вопрос. Вы передаёте через param какие-то данные в флэшку? Например данные о том, в каком разделе находится человек?

Варабейчик 18.10.2006 23:00

Нет, не передаю.

ravenco 18.10.2006 23:06

главное лоадер нормально реализовать
пользуйтесь
Flashparam или Shared Object-ом кукисом в конце концов
проверьте через них была ли загружена если была то лоадер не будет проигроватся или стартонет с нужного кадра (без анимации)

Варабейчик 18.10.2006 23:12

Цитата:

Сообщение от ravenco
главное лоадер нормально реализовать
пользуйтесь
Flashparam или Shared Object-ом кукисом в конце концов
проверьте через них была ли загружена если была то лоадер не будет проигроватся или стартонет с нужного кадра (без анимации)

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

ravenco 18.10.2006 23:38

Цитата:

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

думаю поик по этому сайту поможет Вам в многом (вопрос поднимался несколько раз, все мы здесь учились и учимся), к сожалению кроме этого сайта в других источниках не был :confused: (я патриот). вдруг если не найдете нужную Вам информацию (в чем сомневаюсь), тогда вернемся обратно обсуждению этой проблемы и с радосьтю помогу чем смогу(даже сделаю и вышлю), хорошо?
обещаю...

Варабейчик 18.10.2006 23:41

Цитата:

Сообщение от ravenco
думаю поик по этому сайту поможет Вам в многом (вопрос поднимался несколько раз, все мы здесь учились и учимся), к сожалению кроме этого сайта в других источниках не был :confused: (я патриот). вдруг если не найдете нужную Вам информацию (в чем сомневаюсь), тогда вернемся обратно обсуждению этой проблемы и с радосьтю помогу чем смогу(даже сделаю и вышлю), хорошо?
обещаю...

Спасибо.

Варабейчик 19.10.2006 00:14

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

ravenco 19.10.2006 00:34

Цитата:

Сообщение от Варабейчик
Я вроде нашёл решение своей проблемы <ссылка на пост> на толком ничего от туда не понял, так как для меня это сложно, ибо новичок. Буду рад если мне помогут разобраться.

Я так и знал... завтра будет код + описание... постараюсь...

Варабейчик 19.10.2006 00:39

Цитата:

Сообщение от ravenco
Я так и знал... завтра будет код + описание... постараюсь...

Спасибо, буду ждать.

Варабейчик 20.10.2006 20:34

Тема всё ещё актуальна... к сожалению... :(

ravenco 20.10.2006 22:57

надеюсь ссылка на тутор поможет
http://www.permadi.com/tutorial/flashCookie/index.html
в вашем примере (с ХТМЛ), надо будет писать клиенту кукис (cookie) хоть с ХТМЛ, яваскриптом или самой флэшкой, хоть чем (но рекомендую, писать флэшкой как она загрузится)
и читать флэшкой в начале загрузки (если существует запись в куках, не показывать прелоадер и продолжать с какого-то кадра, или иные действия)
З.Ы. сорри, извиняюсь за отсутвие...

Варабейчик 21.10.2006 10:33

Насколько я понял, в коде страницы мне нужно написать:

Код:

<SCRIPT LANGUAGE="JavaScript">
<!--
function setCookie(name, value)
{
  document.cookie = name+"="+value;
}
//-->
</SCRIPT>

<SCRIPT LANGUAGE="JavaScript">
<!--
function myGetCookie(name)
{
  if (document.cookie)
  {
    var cookies=document.cookie.split(";");
    for (var i=0; i<cookies.length; i++)
    {
      var varName=(cookies[i].split("=")[0]);
      var varValue=(cookies[i].split("=")[1]);

      while (varName.charAt(0)==" ")
        varName=varName.substr(1,varName.length);

      // the escape() function will url encode the value                               
      if (varName==name)
        return escape(varValue);
    }
  }
  return " ";
}
//-->
</SCRIPT>

<SCRIPT LANGUAGE=JavaScript>
<!--
var InternetExplorer = navigator.appName.indexOf("Microsoft") != -1;
// Handle all the the FSCommand messages in a Flash movie
function getCookie_DoFSCommand(command, args) {
  var getCookieObj = InternetExplorer ? getCookie : document.getCookie ;

  // Place your code here...
  if (command=="getCookie")
  {
        // myGetCookie function is defined above
          var cookieValue=myGetCookie(args);
          if (cookieValue==" ")
        {
            alert("Cookie not found, please set cookie first");
          cookieValue="[not found]";
        }
        getCookieObj.SetVariable("_root.cookieValue", cookieValue);
  }
}
// Hook for Internet Explorer
if (navigator.appName && navigator.appName.indexOf("Microsoft") != -1 &&
  navigator.userAgent.indexOf("Windows") != -1 &&
  navigator.userAgent.indexOf("Windows 3.1") == -1)
{
  document.write('<SCRIPT LANGUAGE=VBScript\> \n');
  document.write('on error resume next \n');
  document.write('Sub getCookie_FSCommand(ByVal command, ByVal args)\n');
  document.write('  call getCookie_DoFSCommand(command, args)\n');
  document.write('end sub\n');
  document.write('</SCRIPT\> \n');
}
//-->
</SCRIPT>
<OBJECT classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
 codebase="[edited]"
 ID="getCookie" WIDTH="450" HEIGHT="100" ALIGN="CENTER">
 <PARAM NAME=movie VALUE="getCookie.swf">
 <PARAM NAME=quality VALUE=high> <PARAM NAME=bgcolor VALUE=#0099FF>
  <EMBED src="getCookie.swf" quality=high bgcolor=#0099FF
  WIDTH="450" HEIGHT="100" swLiveConnect=true
  ID="getCookie" NAME="getCookie" ALIGN="CENTER"
  TYPE="application/x-shockwave-flash"
  PLUGINSPAGE="http://www.macromedia.com/go/getflashplayer"></EMBED>
</OBJECT>

а во флешке:

Код:

  // make sure the variables are valid
  if (_root.cookieName.length>=1 && _root.cookieValue.length>=1)
    getURL("javascript:setCookie('"+_root.cookieName+"','"+_root.cookieValue+"')");

fscommand("getCookie", _root.cookieName);

Кикие значения, кроме cookiename мне нужно прописать самому?
Но ведь у меня внешний прелоадер, как сделать, что бы грузился не он, а сам ролик?

Варабейчик 22.10.2006 12:49

Help :(

Dendroid 22.10.2006 13:19

А между тем, здесь написано правильно и максимально просто: http://flasher.ru/forum/showthread.php?p=575191
По-другому помочь здесь можно, только если ты выложишь исходник или хотя бы ссылку на сайт.
Что-то мне подсказывает, что проблема "повторная загрузка флэшки" может быть совсем в другом: например, если каждый раздел ссылается на флэшку, лежащую в его папке... :)

Варабейчик 22.10.2006 15:35

Нет, флешка одна, так как все разделы в одной папке.

Код:

a=a_value&b=b_value&c=c_value...
подобного у себя в коде страницы я найти не могу.

Код:

FlashVars="a=Hello&b=World"
И непонятно, что писать заместо Hello World

Хемуль 22.10.2006 20:59

2 Варабейчик:
О, Боже...
Ладно, обьясняю ещё раз... Допустим, вы хотите из HTML-кода передать во флешку какое-то значение. Значение это можно передать во флешку в виде какой-то переменной. Пусть эта переменная называется player. И пусть есть ещё одна переменная, которую мы хотим передать флешке. Пусть эта вторая переменная называется score. То есть, мы хотим, чтобы когда флешка загрузилась, то в коде ActionScript'а мы могли бы иметь переменные score и player с переданными из HTML-кода значениями. Для этого в тэге object добавляем новый параметр:
Код:

<param name="FlashVars" value="player=user&score=10">
а в тэге embed добавляем новый атрибут:
Код:

FlashVars="player=user&score=10"
После этого во флешке можем обращаться к переменным player и score так, будто они были определены во флешке:
Код:

trace(player);
trace(score);

Должно показать:
Код:

user
10


Варабейчик 22.10.2006 21:50

Глупый вопрос, как это поможет мне в том, что бы флешка не грузилась по новой? :o :umnik2:

Хемуль 22.10.2006 22:33

2 Варабейчик:
Э... А это кто писал?
Цитата:

Сообщение от Варабейчик
Я вроде нашёл решение своей проблемы <ссылка на пост> на толком ничего от туда не понял, так как для меня это сложно, ибо новичок. Буду рад если мне помогут разобраться.


Dendroid 23.10.2006 20:51

Да нет у него ещё никаких переменных, я думаю, он ещё не знает, что чтобы менюшка выглядела по-разному в разных разделах, она должна получить номер этого раздела ;)
Пока что, я думаю, там так: нажал на кнопку - что-то тут изменилось, но рефреш страницы опять сбросил всё на начало :)

Пока автор не выложит исходник - продвижения здесь не будет...

Кстати, можно ещё шаредобжект использовать для передачи состояния меню....;)

Варабейчик 24.10.2006 00:25

Да мне не нужно состояние меню, мне надо, что бы юзер каждый раз не ждал загрузки одной и той же флешки в разных разделах. :o

wvxvw 24.10.2006 00:38

если у юзера отключено кеширование, то никакими силами ты этого не добъешся...
А так оно вообще-то по умолчанию кешируется, если флешка пришла из одного и того же источника, то она не записывается 2 раза... только что проверил: создал 2 ХТМЛ файла с одной и той же флешкой, выложил оба на сервер, открыл в браузере. Результат - в кеше только одна флешка, а не 2.

Варабейчик 24.10.2006 01:20

Цитата:

Сообщение от wvxvw
если у юзера отключено кеширование, то никакими силами ты этого не добъешся...
А так оно вообще-то по умолчанию кешируется, если флешка пришла из одного и того же источника, то она не записывается 2 раза... только что проверил: создал 2 ХТМЛ файла с одной и той же флешкой, выложил оба на сервер, открыл в браузере. Результат - в кеше только одна флешка, а не 2.

А ничего, что у меня в ХТМЛ внешний прелоадер, который грузит флеш меню? Я посмотрел, флешка в кэше тоже одна.

Кстати, в мозиле флшка грузится при заходе в раздел, и при последующих входах уже не грузится - запускается сразу, а в ИЕ грузится ВООБЩЕ каждый раз по новой. :eek: :(

ravenco 24.10.2006 01:26

может у тебя в тэгах no cache (не кэшировать) написано?

wvxvw 24.10.2006 04:22

Я посмотрел, флешка в кэше тоже одна.
в ИЕ грузится ВООБЩЕ каждый раз по новой

Одно из двух... либо одна флешка в кеше, либо каждый раз по-новой. Ну не может такого быть... проверь настройки эксплорера, там может стоять что-то типа "обновлять кеш при каждом заходе на страницу", хотя по дефолту там стоит "автоматически".
Еще дурацкое предположение... кеш превысил отведенное ему дисковое пространство...

Варабейчик 24.10.2006 09:22

Для интереса сделал так, удалил флешку из кеша, зашёл заново, флешка загрузилась, появилась в кеше, через несколько минут зашёл в другой раздел, посмотрел во флешке "Последний доступ", там стоит время, когда я первый раз её загрузил. Получается, что браузер просто не читает её из кеша. Может всё таки дело в прелоадере?

wvxvw 24.10.2006 17:08

Ну так выложи, что там в прелоадере-то написано =) а вдруг он там грузит что-нибудь типа:
Код:

myLoader.loadClip("my_url.swf+"?my_var="+Math.random()*10);
Иногда так делают именно для того, чтобы избежать загрузки флешки из кеша...

Варабейчик 24.10.2006 17:21

Код:

var MOVIE_PATH:String = "Head.swf";
_root.attachMovie("preloader", "preloader", _root.getNextHighestDepth(), {_x:Stage.width / 2, _y:Stage.height / 2});
preloader._x -= preloader._width / 2;
preloader._y -= preloader.height / 2;
loadMovieNum(MOVIE_PATH, 1);
_level1.stop();
_root.onEnterFrame = function () {
    var percent:Number = Math.ceil((_level1.getBytesLoaded()/_level1.getBytesTotal()) * 100);
        if (isNaN(percent))
    {
        percent = 0;
    }
    this.preloader.gotoAndStop(percent);
        this.preloader.progress_string.text = percent + "%";
    if (percent > 99) {
                this.preloader.removeMovieClip();
        delete this.onEnterFrame;
                _level1.gotoAndPlay(2);
    }
}


wvxvw 24.10.2006 18:04

даж не знаю... по идее все нормально, лучше, конечно пользоваться MovieClipLoader.loadClip(), а не loadMovieNum(), но в данном случае ничего предосудительного вроде не наблюдается...
Попробуй разве что полный путь к загружаемой флешке прописать:
Код:

var MOVIE_PATH:String = "www.myDomain.com/Head.swf";
Хотя, по идее, резницы быть не должно...
Дело в том, что флешка определяет путь к загружаемому файлу относительно страницы на которой находится, т.е. если выложить одну и ту же флешку на страницы типа: www.myDomain.com/page1.html и www.myDomain.com/pages/page1.html то в первом случае относительные линки трансформируются в www.myDomain.com/mySWF.swf, а во втором - в www.myDomain.com/pages/mySWF.swf вполне возможно, что для сервера эти запросы равнозначны, но вот с точки зрения браузера - нет.
ЗЫ. Можно еще поэксперементировать с <BASE /> в заголовке ХТМЛя, но мне кажется, что это не самый продуктивный подход...
http://www.w3.org/TR/html4/struct/links.html#edef-BASE

Варабейчик 24.10.2006 18:54

wvxvw
Написал полный путь, появилась проблема - в ИЕ после загрузки прелоадером флешки, он не исчезает, а остаёся на заднем плане (кусок полоски для отображения загрузки), в мозилле же нет.

wvxvw 24.10.2006 19:20

но первая проблема решилась?
Чуть по-позже напишу нормальный прелоадер, сейчас уходить надо...

Варабейчик 24.10.2006 20:26

Так чиво, весь прелоадер переделывать надо? :(

wvxvw 24.10.2006 23:32

вообще... знаешь что, выложи лучше исходник прелоадера, там его переделать - совсем не много работы, но я хоть буду видеть в чем проблема.

Варабейчик 25.10.2006 00:22

Вложений: 1
Воть:

wvxvw 25.10.2006 05:05

Вложение 15595
Вот, пробуй, вроде все работает. Т.как я не знаю откуда ты собираешься грузить флешку, то адрес вынес в ХТМЛ (ХТМЛ и ЖаваСкрипт прилагаются, за жаваскрипт спасибо iNils)
Ты, ессна можешь это убрать, и задавать имя к файлу прямо в флешке.

Варабейчик 25.10.2006 08:47

Вроде всё ок, спасибо!

wvxvw 25.10.2006 17:19

наздоровье =)


Часовой пояс GMT +4, время: 00:34.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.