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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 13.04.2011, 18:06
Prometei1599 вне форума Посмотреть профиль Отправить личное сообщение для Prometei1599 Найти все сообщения от Prometei1599
  № 1  
Ответить с цитированием
Prometei1599

Регистрация: Jun 2010
Сообщений: 65
По умолчанию Задание временных интервалов

Добрый день коллеги!
Каким методом или классом можно задавать временной интервал между событиями, например событиями загрузки изображения 1 и изображения 2?
setInterval не предлагать!)
К примеру, загружается первое изображение и плавно отображается на экране, через 3 сек вместо первого так же появляется второе и т.д.
Вопрос покажется нубским, но под конец рабочего дня котелок плохо варит...

Заранее спасибо!

Старый 13.04.2011, 18:24
Hauts вне форума Посмотреть профиль Отправить личное сообщение для Hauts Посетить домашнюю страницу Hauts Найти все сообщения от Hauts
  № 2  
Ответить с цитированием
Hauts
 
Аватар для Hauts

блогер
Регистрация: Feb 2008
Адрес: Россия, Новосибирск, Академгородок
Сообщений: 2,113
Записей в блоге: 1
Отправить сообщение для Hauts с помощью ICQ Отправить сообщение для Hauts с помощью Skype™
setTimeout, onEnterFrame
__________________
hauts.ru

Старый 13.04.2011, 18:31
petyar вне форума Посмотреть профиль Отправить личное сообщение для petyar Найти все сообщения от petyar
  № 3  
Ответить с цитированием
petyar

Регистрация: Sep 2005
Сообщений: 106
Кажется, вы что-то напутали. Вы вызываете методы. А обработчик события вызывается, когда происходит то, на что он подписан.

Скажем, грузите картинку через MovieClipLoader. Обработчик события onLoadInit вызовется, когда закончится загрузка. Что вам мешает вызывать метод loadClip с заданным интервалом?

1) Можно загрузить все изображения (если их мало и это не критично), потом с интервалом "плавно отображать на экране", да хоть что делайте с ними потом.
2) Загружаем одно изображение, со свистелками-перделками отображаем, потом начинаем грузить 2-е. Отображение начинать, когда сработает обработчик события загрузки.

Вот вам простенький пример:
Код AS1/AS2:
var pics:Array = new Array("1.png", "2.png");
var container:MovieClip = createEmptyMovieClip("container", getNextHighestDepth());
var mcLoader:MovieClipLoader = new MovieClipLoader();
var currentPic:Number = 0;
mcLoader.addListener(this);
mcLoader.loadClip(pics[0], container);
//
function onLoadInit(mc:MovieClip) {
	currentPic++;
	mc._alpha = 0;
	timer = setInterval(displayPic, 50, mc);
}
//
function displayPic(mc:MovieClip) {
	if (mc._alpha < 100) {
		mc._alpha += 5;
	} else if (currentPic < pics.length) {
		setTimeout(function() {mcLoader.loadClip(pics[currentPic], container);}, 3000);
		clearInterval(timer);
	} else {
		clearInterval(timer);
	}
}


Последний раз редактировалось petyar; 13.04.2011 в 19:13.
Старый 18.04.2011, 16:17
Prometei1599 вне форума Посмотреть профиль Отправить личное сообщение для Prometei1599 Найти все сообщения от Prometei1599
  № 4  
Ответить с цитированием
Prometei1599

Регистрация: Jun 2010
Сообщений: 65
Спасибо помогло!)
Только трудность теперь в другом возникла: в повторном воспроизведении флэша.
Loop в настройках публикации почему-то не помогает.

Старый 18.04.2011, 17:02
Haiat вне форума Посмотреть профиль Отправить личное сообщение для Haiat Найти все сообщения от Haiat
  № 5  
Ответить с цитированием
Haiat
[+6 09.06.11]
 
Аватар для Haiat

Регистрация: May 2007
Сообщений: 721
сделайте программно

Старый 18.04.2011, 19:34
Prometei1599 вне форума Посмотреть профиль Отправить личное сообщение для Prometei1599 Найти все сообщения от Prometei1599
  № 6  
Ответить с цитированием
Prometei1599

Регистрация: Jun 2010
Сообщений: 65
Привожу код:
Код AS1/AS2:
var ID1:Number = 0;//для изменения прозрачности изображения
var ID2:Number = 0;//для движения заголовка
var ID3:Number = 0;//для движения подзаголовка
var a:Number = 0.09;//ускорение для заголовков
 
var mcl:MovieClipLoader = new MovieClipLoader();
var listener:Object = new Object();
mcl.addListener(listener);
var xml_obj:XML = new XML();
var imagesCount:Number = 0;
var titlesArray:Array = new Array();
var subTitlesArray:Array = new Array();
_title.forceSmoothing = true;
subtitle.forceSmoothing = true;
mc._alpha = 0;
 
xml_obj.ignoreWhite = true;
xml_obj.load("settings.xml");//точка входа
 
xml_obj.onLoad = function(success:Boolean) {
	if (success) {
		imagesCount = xml_obj.firstChild.childNodes[0].attributes.count;
		var k:Number = 0;
		do {
			var str_subtitle = xml_obj.firstChild.childNodes[0].childNodes[k].childNodes;
			var str_title = xml_obj.firstChild.childNodes[0].childNodes[k].attributes.title;
			if ((str == undefined) && (str_subtitle == undefined)) {
				break;
			}
			titlesArray = titlesArray.concat(str_title);
			subTitlesArray = subTitlesArray.concat(str_subtitle);
			k++;
		} while(true);
		loadImages(1);
	}
};
 
loadImages = function(i:Number):Void{
	if(i > imagesCount)
		return;
 
	var src:String = "images/flash"+i+".jpg";
	_title.text = titlesArray[i-1];
	subtitle.text = subTitlesArray[i-1];
	mcl.loadClip(src, mc);
 
	listener.onLoadInit = function(target_mc:MovieClip):Void{
		setTimeout(alphaChange, 0, "appear");
		setTimeout(moveTitle, 50, "up");
		setTimeout(moveSubTitle, 50, "up");
 
		setTimeout(alphaChange, 5000, "disappear");
		setTimeout(moveTitle, 5050, "down");
		setTimeout(moveSubTitle, 5050, "down");
 
		setTimeout(loadImages, 5400, i+1);
	}
}
 
alphaChange = function(to_do:String):Void{
	if(to_do == "appear"){
		ID1 = setInterval(appear, 15);
	}
	if(to_do == "disappear")
	{
		ID1 = setInterval(disappear, 15);
	}
}
 
moveTitle = function(to_do:String):Void{
	if(to_do == "up"){
		ID2 = setInterval(titleUp, 15);
	}
	if(to_do == "down"){
		ID2 = setInterval(titleDown, 15);
	}
}
 
moveSubTitle = function(to_do:String):Void{
	if(to_do == "up"){
		ID3 = setInterval(subtitleUp, 15);
	}
	if(to_do == "down"){
		ID3 = setInterval(subtitleDown, 15);
	}
}
 
appear = function():Void{
	if(mc._alpha < 100){
		mc._alpha += 5;
	}else{
		clearInterval(ID1);
	}
}
 
disappear = function():Void{
	if(mc._alpha > 0){
		mc._alpha -= 5;
	}else{
		clearInterval(ID1);
	}
}
 
titleUp = function():Void{
	if(_title._y > 230)
		_title._y += (230 - _title._y)*a;
	else
		clearInterval(ID2);
}
 
titleDown = function():Void{
	if(_title._y < 300)
		_title._y += 10;
	else
		clearInterval(ID2);
}
 
subtitleUp = function():Void{
	if(subtitle._y > 265)
		subtitle._y += (265 - subtitle._y)*a;
	else
		clearInterval(ID3);
}
 
subtitleDown = function():Void{
	if(subtitle._y < 335)
		subtitle._y += 10;
	else
		clearInterval(ID3);
}
gotoAndStop не помогает...
Может есть другой способ?!

Добавлено через 24 часа 36 минут
Получилось!

Создать новую тему Ответ Часовой пояс GMT +4, время: 18:41.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

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

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


 


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


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