Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Поиск рулит! Сообщения за день Все разделы прочитаны
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 28.05.2012, 01:39
Миминов Руслан вне форума Посмотреть профиль Отправить личное сообщение для Миминов Руслан Найти все сообщения от Миминов Руслан
  № 1  
Ответить с цитированием
Миминов Руслан
[+6 14.06.13]

Регистрация: Jan 2011
Сообщений: 35
По умолчанию как сделать чтобы при нажатии на кнопку страница перезагружалась заново

друзья, подскажите как сделать чтобы при нажатии на кнопку страница перезагружалась заново, gotoAndPlay (1) - не то, т.к. анимация внутри movie_clipoв всё равно продолжается, а у меня на сцене только один первый кадр с movieclipaми... а мне нужно, чтобы вся сцена делала какой-нибудь reload что ли? :\\\ чтобы заново всё пошло... что писать вместо gotoAndPlay(1)?
заранее благодарен за ответ!
__________________
требуются проф.flashеры для разработки приложений и игр на Flash\ActionScript зп от 3000$

Старый 28.05.2012, 02:14
expl вне форума Посмотреть профиль Отправить личное сообщение для expl Найти все сообщения от expl
  № 2  
Ответить с цитированием
expl

блогер
Регистрация: Feb 2006
Сообщений: 1,474
Записей в блоге: 3
1. В странице пишем код на java-script:
Код:
function reloadPage() {
    window.location = window.location;
}
2. Во флешке:
Код AS3:
ExternalInterface.call("reloadPage");
Можно еще сделать лоадер и грузить туда другую флешку, а потом выгружать и грузить заново, не уверен, правда, что никаких висяков от старой загрузки не останется.

Старый 28.05.2012, 02:20
Миминов Руслан вне форума Посмотреть профиль Отправить личное сообщение для Миминов Руслан Найти все сообщения от Миминов Руслан
  № 3  
Ответить с цитированием
Миминов Руслан
[+6 14.06.13]

Регистрация: Jan 2011
Сообщений: 35
первый код мне не куда писать, для меня СТРАНИЦА - это сам флеш... :\ который получается при нажатии на CTRL+ENTER мне надо при нажатии на кнопку, чтобы заново всё грузилось...
Код AS3:
mc_m1.mc_m2.btn_1.addEventListener(MouseEvent.CLICK, click1);
function click1(Event:MouseEvent)
{MovieClip(root).gotoAndPlay(0);
}
вот тут нельзя заменить gotoAndPlay(0) чем-нибудь, что перезагрузит flash, чтобы mc, находящиеся на первом кадре начали заново проигрываться?
__________________
требуются проф.flashеры для разработки приложений и игр на Flash\ActionScript зп от 3000$


Последний раз редактировалось mooncar; 28.05.2012 в 18:07.
Старый 28.05.2012, 17:05
expl вне форума Посмотреть профиль Отправить личное сообщение для expl Найти все сообщения от expl
  № 4  
Ответить с цитированием
expl

блогер
Регистрация: Feb 2006
Сообщений: 1,474
Записей в блоге: 3
Если необходимость только начать все вложенные анимации заново - то может просто поставить пустой кадр 1-ым?

Старый 28.05.2012, 17:24
in4core вне форума Посмотреть профиль Отправить личное сообщение для in4core Найти все сообщения от in4core
  № 5  
Ответить с цитированием
in4core
[+4 06.05.14]
 
Аватар для in4core

Регистрация: Mar 2009
Сообщений: 4,219
Записей в блоге: 14
Код AS3:
unction reloadPage() {
    window.location = window.location;
}
Вообще то есть метод reload()
__________________
Марк Tween

Старый 28.05.2012, 18:33
Korchy вне форума Посмотреть профиль Отправить личное сообщение для Korchy Найти все сообщения от Korchy
  № 6  
Ответить с цитированием
Korchy
 
Аватар для Korchy

Регистрация: May 2011
Сообщений: 301
Записей в блоге: 2
Код AS3:
public function OnClick(e:Event):void {
var Request:URLRequest = new URLRequest("страница хтмл на которой флешка.html");
navigateToURL(Request,"_self");
}
__________________
interplanety

Старый 28.05.2012, 20:11
RJ Presto вне форума Посмотреть профиль Отправить личное сообщение для RJ Presto Найти все сообщения от RJ Presto
  № 7  
Ответить с цитированием
RJ Presto

Регистрация: Nov 2007
Сообщений: 55
зачем вы все пишите ответы, не читая ветку выше?
ТС же говорит, что задача - начать проигрывать именно SWF заново, без браузера.

Старый 28.05.2012, 20:17
MikroAcse вне форума Посмотреть профиль Отправить личное сообщение для MikroAcse Найти все сообщения от MikroAcse
  № 8  
Ответить с цитированием
MikroAcse
 
Аватар для MikroAcse

Регистрация: Feb 2012
Сообщений: 1,540
Код AS3:
gotoAndStop(1);

Старый 28.05.2012, 21:08
elder_Nosferatu вне форума Посмотреть профиль Отправить личное сообщение для elder_Nosferatu Найти все сообщения от elder_Nosferatu
  № 9  
Ответить с цитированием
elder_Nosferatu
 
Аватар для elder_Nosferatu

Регистрация: Nov 2010
Адрес: 48° 55'N 24° 42'E GMT +2:00
Сообщений: 399
Записей в блоге: 1
Решение череез 5-ую точку...
Все дела делаем в первом кадре (его лучше сделать пустым, а на последнем кадре написать this.gotoAndPlay(2))
- заводим переменную, которая будет отвечать за надобность "обнуления" анимации.
Код AS3:
var needReset:Boolean = false;
- Заводим массив, каждый елемент которого будет списком мувиков текущего кадра, что здесь начинают свою анимацию (впервые появляются на временной шкале, все другие присутствующие мувики уже стартанули на предыдущих кадрах)
Код AS3:
var frames:Array = new Array();
- вешаем обработчик события Event.ENTER_FRAME, который будет сканировать кадр (если нужно), перезапускать анимацию (если нужно) и отменять необходимость перезапуска анимации, если текущий кадр - последний.
Код AS3:
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;
	}
}
- Вешаем обработчик события MouseEvent.CLICK на нужную кнопку, который будет устанавливать необходимость перезапуска анимации и переходить на первый (пустой) кадр главной сцены.
Код AS3:
myButton.addEventListener(MouseEvent.CLICK, handleButtonClick);
function handleButtonClick(event:MouseEvent):void {
	needReset = true;
	this.gotoAndPlay(1);
}
- Функция проверки наличия мувика в таблице обновлений
Код AS3:
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;
}
- Функция сканирования кадра
Код AS3:
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;
}
- Функция обновления кадра
Код AS3:
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);
		}
	}
}
-----------

Все вместе
Код AS3:
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);
}
З.Ы.: Кнопку обновления лучше всего сначала сделать невидимой и показать ее только после последнем кадра. Тогда будет увереность, что все кадры просканированы!
З.З.Ы.: Код написан "с фонаря", а проверять поленился... Но, думаю, идея понятна.
З.З.З.Ы.: Если мувики главногй сцены содержат в себе другие анимированые мувики, тогда прийдется алгоритм переделать под рекурсию, но раз мне лень было тестить свой код, то на рекурсию сами понимаете...

Старый 31.05.2012, 01:27
Миминов Руслан вне форума Посмотреть профиль Отправить личное сообщение для Миминов Руслан Найти все сообщения от Миминов Руслан
  № 10  
Ответить с цитированием
Миминов Руслан
[+6 14.06.13]

Регистрация: Jan 2011
Сообщений: 35
я не могу сделать первый кадр пустым т.к. уже всё проигрывается с первого кадра (куча анимации, которая ссылается на первый кадр) неужели нет команды, которая просто перезагружает весь .SWF? :\

метод, предложенный in4core
Код AS3:
function reloadPage() {
    window.location = window.location;
}
- не работает... или я просто не понимаю что такое window.location=window.location - это команда или её на что-то надо заменить?

у меня просто кнопка, вложенная в 2 movie_clipa со слушателем событий, которая должна начинать всю анимацию заново:
Код AS3:
mc_m1.mc_m2.btn_1.addEventListener(MouseEvent.CLICK, click1);
function click1(Event:MouseEvent)
{
}
что бы я не писал в теле функции - ничего не работает
__________________
требуются проф.flashеры для разработки приложений и игр на Flash\ActionScript зп от 3000$


Последний раз редактировалось udaaff; 31.05.2012 в 01:30.
Создать новую тему Ответ Часовой пояс GMT +4, время: 01:17.
Быстрый переход
  « Предыдущая тема | Следующая тема »  
Опции темы
Опции просмотра

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

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


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


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