![]() |
|
||||||||||
|
|||||
|
Регистрация: Nov 2009
Сообщений: 20
|
Здравствуйте!
Облазили много форумов Никто так вменяемого ответа и не дал. Неужели это настолько сложно? Проблема следующая: на сайте имеется *.swf со стартовой анимацией, при каждом обновлении страницы, (либо переходе на другую страницу сайта) *.swf загружается заново и заново показавает свою стартовую анимацию. Можно ли и каким образом сделать так чтобы *.swf не обновлялся каждый раз вместе со страницей, НО при этом загружался только при переходе по ссылке (к примеру) на главную страницу? Заранее благодарю |
|
|||||
|
Модрон-ветеринар
|
Можно.
Нужно придумать, где хранить данные об актуальном состоянии флешки и организовать проверку этих данных при ее очередной загрузке. Загрузка же, в свою очередь, должна быть организована с учетом этих данных. Если в данных отмечено, что, скажем, со страницы ушли, когда флешка находилась на 425 кадре, то при загрузке она должна будет стартовать с 426. Или, по вашему обстоятельству, просто записывать инфу о том, что стартновая анимация уже проиграна, и загружать флешку уже с первого рабочего кадра. Запоминание можно организовать либо через класс SharedObject, либо задействовать php-шный механизм сессий. Последний раз редактировалось mooncar; 18.11.2009 в 10:13. |
|
|||||
|
Регистрация: Nov 2009
Сообщений: 20
|
А можно ли эти данные передавать к примеру переменным JavaScript и обратно?
|
|
|||||
|
Модрон-ветеринар
|
Передавать данные в JS? А что с ними сделает функция JS? Таскать данные туда-сюда со страницы на страницу? Лучше уж использовать какое-то хранилище.
Вообще, для взаимодействия с JS страницы флеш может использовать класс ExternalInterface. Последний раз редактировалось mooncar; 18.11.2009 в 12:34. |
|
|||||
|
Регистрация: Nov 2009
Сообщений: 20
|
Функция будет проверять с какой страницы пришел пользователь. Если со страниц A, B, C - то анимацию проигрывать сначала иначе - с N-го кадра.
|
|
|||||
|
Модрон-ветеринар
|
Тогда JS не нужно, вам самый простой способ - в коде публикации использовать параметр flashvars и указывать значение переменной, например, номер кадра с которой стартовать. Эту переменную флешка получит, и в зависимости от нее старт организуйте с нужного кадра. Синтаксис flashvars - поиском воспользуйтесь.
|
|
|||||
|
Регистрация: Nov 2009
Сообщений: 20
|
Спасибо Вам, хоть один умный и вменяемый человек нашелся!!
Данные можно передать так: HTML: <param name="FlashVars" value="&var1='X'" /> FLASH: on (release) { myTxt=_root.var1; getURL("http://"+myTxt, "_blank"); } А Вот, как, наоборот из Flash в Html передать данные? Т. е. конкретней, на сайт вставлено флеш-меню с кнопками, которые могут находится в триггерном состоянии (1-при наведении мыши, 2-активное, 3-е при "отведении" мыши) Вот его собственно код: stage.frameRate = 30; //---- добавляем кнопки к массиву -------- var buttonsArray:Array = [Box,Mma,Strong,Extreme,Samooborona]; //----цикл в массиве buttonsArray----- //----установим некоторые свойства и добавим события кнопкам---- function setButtons():void { for (var i:int=0; i<buttonsArray.length; i++) { buttonsArray[i].id = i; buttonsArray[i].buttonMode = true; buttonsArray[i].mouseChildren = false; buttonsArray[i].mouseEnabled = true; buttonsArray[i].addEventListener(MouseEvent.ROLL_OVER,playOver); buttonsArray[i].addEventListener(MouseEvent.ROLL_OUT,playOut); buttonsArray[i].addEventListener(MouseEvent.CLICK,doClick); } } //----выполняется, когда мышь наводится над кнопкой---- function playOver(event:MouseEvent):void { event.currentTarget.gotoAndPlay("over"); } //----выполняется, когда мышь уходит с кнопки---- function playOut(event:MouseEvent):void { event.currentTarget.gotoAndPlay("out"); } //----выполняется, когда мышь кликает кнопку----- function doClick(event:MouseEvent):void{ //----установим переменную currentBtn равную----- //----идентификатору кнопки (id) , которая была кликнута----- var currentBtn:int = event.currentTarget.id; //----вызываем функцию setSelectedBtn setSelectedBtn(currentBtn); } /*проверим, какая кнопка была кликнута, если id , переданная в функцию setSelectedBtn, идентична id кликнутой кнопки, мы полагаем, что кнопки находятся в положении нажатой down (выделенная) и удаляем все события, добавленные к ней*/ function setSelectedBtn(id:int):void{ for (var i:int=0; i< buttonsArray.length; i++) { if (id == i) { buttonsArray[i].gotoAndStop("down"); buttonsArray[i].buttonMode = false; buttonsArray[i].mouseEnabled = false; buttonsArray[i].removeEventListener(MouseEvent.ROLL_OVER,playOver); buttonsArray[i].removeEventListener(MouseEvent.ROLL_OUT,playOut); buttonsArray[i].removeEventListener(MouseEvent.CLICK,doClick); } else { if(buttonsArray[i].currentLabel =="down"){ buttonsArray[i].gotoAndPlay("out"); } buttonsArray[i].buttonMode = true; buttonsArray[i].mouseEnabled = true; buttonsArray[i].addEventListener(MouseEvent.ROLL_OVER,playOver); buttonsArray[i].addEventListener(MouseEvent.ROLL_OUT,playOut); buttonsArray[i].addEventListener(MouseEvent.CLICK,doClick); } } } setButtons(); Нужно естественно сделать так чтобы при переходе по ссылкам соответствующая кнопка меню как-будто оставалась активной. Последний раз редактировалось Cristina.32; 18.11.2009 в 16:53. |
|
|||||
|
Модрон-ветеринар
|
Передача данных из флеша на страницу - пример из хелпа:
HTML: <script>
function sayHello(name) {
alert(">> Hello " + name + ".");
return ">> Hi Flash.";
}
</script>
import flash.external.*; var greeting:String; btn.onPress = function() { greeting = String(ExternalInterface.call("sayHello", "browser")); this.mcTxt.text = greeting; // >> Hi Flash. } ![]() Последний раз редактировалось mooncar; 18.11.2009 в 17:06. |
![]() |
![]() |
Часовой пояс GMT +4, время: 08:39. |
|
|
« Предыдущая тема | Следующая тема » |
|
|