![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
[+6 14.06.13]
Регистрация: Jan 2011
Сообщений: 35
|
друзья, подскажите как сделать чтобы при нажатии на кнопку страница перезагружалась заново, gotoAndPlay (1) - не то, т.к. анимация внутри movie_clipoв всё равно продолжается, а у меня на сцене только один первый кадр с movieclipaми... а мне нужно, чтобы вся сцена делала какой-нибудь reload что ли? :\\\ чтобы заново всё пошло... что писать вместо gotoAndPlay(1)?
заранее благодарен за ответ!
__________________
требуются проф.flashеры для разработки приложений и игр на Flash\ActionScript зп от 3000$ |
|
|||||
|
1. В странице пишем код на java-script:
2. Во флешке: Можно еще сделать лоадер и грузить туда другую флешку, а потом выгружать и грузить заново, не уверен, правда, что никаких висяков от старой загрузки не останется. |
|
|||||
|
[+6 14.06.13]
Регистрация: Jan 2011
Сообщений: 35
|
первый код мне не куда писать, для меня СТРАНИЦА - это сам флеш... :\ который получается при нажатии на CTRL+ENTER
мне надо при нажатии на кнопку, чтобы заново всё грузилось...
вот тут нельзя заменить gotoAndPlay(0) чем-нибудь, что перезагрузит flash, чтобы mc, находящиеся на первом кадре начали заново проигрываться?
__________________
требуются проф.flashеры для разработки приложений и игр на Flash\ActionScript зп от 3000$ Последний раз редактировалось mooncar; 28.05.2012 в 18:07. |
|
|||||
|
__________________
interplanety |
|
|||||
|
Регистрация: Nov 2007
Сообщений: 55
|
зачем вы все пишите ответы, не читая ветку выше?
ТС же говорит, что задача - начать проигрывать именно SWF заново, без браузера. |
|
|||||
|
Регистрация: Feb 2012
Сообщений: 1,540
|
|
|
|||||
|
Решение череез 5-ую точку...
Все дела делаем в первом кадре (его лучше сделать пустым, а на последнем кадре написать this.gotoAndPlay(2)) - заводим переменную, которая будет отвечать за надобность "обнуления" анимации. - Заводим массив, каждый елемент которого будет списком мувиков текущего кадра, что здесь начинают свою анимацию (впервые появляются на временной шкале, все другие присутствующие мувики уже стартанули на предыдущих кадрах) - вешаем обработчик события Event.ENTER_FRAME, который будет сканировать кадр (если нужно), перезапускать анимацию (если нужно) и отменять необходимость перезапуска анимации, если текущий кадр - последний. this.addEventListener(Event.ENTER_FRAME, handleEnterFrame); function handleEnterFrame(event:Event):void { if (frames[this.currentFrame] == null) { frames[this.currentFrame] = scanFrame(); } if (needReset) { resetFrame(); } if (this.currentFrame == this.totalFrames) { needReset = false; } } myButton.addEventListener(MouseEvent.CLICK, handleButtonClick); function handleButtonClick(event:MouseEvent):void { needReset = true; this.gotoAndPlay(1); } function notScanned(child:MovieClip):void { var len:uint = frames.length; for (var i:uint = 0; i < len; ++i) { if (frames[i] is Array) { var arr:Array = frames[i]; if (arr.indexOf(child) != -1) return false; } } return true; } function scanFrame():Array { var res:Array = new Array(); var len:uint = this.numChildren; for (var i:uint = 0; i < len; ++i) { var child:MovieClip = this.getChildAt(i) as MovieClip; if (chid != null) { if (notScanned(child)) { res.push(child); } } } return res; } function resetFrame():void { var arr:Array = frames[this.currentFrame]; if (arr != null) { var len:uint = arr.length; for (var i:uint = 0; i < len; ++i) { var mc:MovieClip = arr[i] as MovieClip; mc.gotoAndPlay(1); } } } Все вместе var needReset:Boolean = false; var frames:Array = new Array(); this.addEventListener(Event.ENTER_FRAME, handleEnterFrame); myButton.addEventListener(MouseEvent.CLICK, handleButtonClick); function notScanned(child:MovieClip):void { var len:uint = frames.length; for (var i:uint = 0; i < len; ++i) { if (frames[i] is Array) { var arr:Array = frames[i]; if (arr.indexOf(child) != -1) return false; } } return true; } function scanFrame():Array { var res:Array = new Array(); var len:uint = this.numChildren; for (var i:uint = 0; i < len; ++i) { var child:MovieClip = this.getChildAt(i) as MovieClip; if (chid != null) { if (notScanned(child)) { res.push(child); } } } return res; } function resetFrame():void { var arr:Array = frames[this.currentFrame]; if (arr != null) { var len:uint = arr.length; for (var i:uint = 0; i < len; ++i) { var mc:MovieClip = arr[i] as MovieClip; mc.gotoAndPlay(1); } } } function handleEnterFrame(event:Event):void { if (frames[this.currentFrame] == null) { frames[this.currentFrame] = scanFrame(); } if (needReset) { resetFrame(); } if (this.currentFrame == this.totalFrames) { needReset = false; } } function handleButtonClick(event:MouseEvent):void { needReset = true; this.gotoAndPlay(1); } З.З.Ы.: Код написан "с фонаря", а проверять поленился... Но, думаю, идея понятна. З.З.З.Ы.: Если мувики главногй сцены содержат в себе другие анимированые мувики, тогда прийдется алгоритм переделать под рекурсию, но раз мне лень было тестить свой код, то на рекурсию сами понимаете... |
|
|||||
|
[+6 14.06.13]
Регистрация: Jan 2011
Сообщений: 35
|
я не могу сделать первый кадр пустым
т.к. уже всё проигрывается с первого кадра (куча анимации, которая ссылается на первый кадр) неужели нет команды, которая просто перезагружает весь .SWF? :\ метод, предложенный in4core - не работает... или я просто не понимаю что такое window.location=window.location - это команда или её на что-то надо заменить? ![]() у меня просто кнопка, вложенная в 2 movie_clipa со слушателем событий, которая должна начинать всю анимацию заново: что бы я не писал в теле функции - ничего не работает
__________________
требуются проф.flashеры для разработки приложений и игр на Flash\ActionScript зп от 3000$ Последний раз редактировалось udaaff; 31.05.2012 в 01:30. |
![]() |
![]() |
Часовой пояс GMT +4, время: 01:17. |
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | |
| Опции просмотра | |
|
|