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

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

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

Регистрация: Dec 2010
Сообщений: 9
По умолчанию Рандомная загрузка разных swf

И снова здравствуйте!

Ситуация такая: есть пустая флэшка, куда я загружаю 8 swf (A, Aex, B, Bex, C, Cex, D, Dex). Проблема заключается в том, что мне нужно, чтобы они загружались туда рандомными парами (A-Aex, B-Bex и т.д.) через определенные промежутки времени. То есть в результате была следующая последовательность:

- любая swf из A, B, C, D

через 8 секунд

- любая swf из Aex (если предыдущая была A), Bex (если предыдущая была B) и т.д.

через 8 секунд цикл начинается заново (и было бы вообще круто, если бы заново был рандом, но не та же пара)

Может быть сделать 4 папки и грузить флэшки попарно оттуда? Но нужно, чтобы первая обязательно грузилась A, B, C или D

Может я вообще сильно заморачиваюсь и все можно реализовать легко и просто?

Не могу никак склеить пары вместе, так как бережем трафик. При этом не могу сделать прямую последовательность, так как некоторые клипы рискуют быть не увиденными никогда.

Я заранее благодарю всех откликнувшихся, я вам уже обязана сильно-сильно

Старый 23.12.2010, 15:20
lexa2000lexa вне форума Посмотреть профиль Отправить личное сообщение для lexa2000lexa Найти все сообщения от lexa2000lexa
  № 2  
Ответить с цитированием
lexa2000lexa

Регистрация: Sep 2005
Сообщений: 950
можно както так набрасам код побыстрому
Код AS1/AS2:
var arr:Array = ["A","B","C"]
var locRoot:MovieClip = this
function loadContent(id:String):Void{
	trace(id)
	var url:String = id+".swf"
	var contener:MovieClip = locRoot.createEmptyMovieClip("contenerload",locRoot.getNextHighestDepth());
	var contentMcl:MovieClipLoader = new MovieClipLoader();
	contentMcl.addListener(locRoot)
	locRoot.onLoadInit = function(mc){
		if(id.length==1){
			setTimeout(loadContent,8000,(id+"ex"))
		}else{
			setTimeout(loadContent,8000,nameSwf())
			}
	}
 
	contentMcl.loadClip(url,contener);
}
var nameswf:String = arr[random(arr.length)]
loadContent(nameswf)
function nameSwf():String {
	var id:Number = random(arr.length)
	if(nameswf!=arr[id]){
		nameswf = arr[id]
		return arr[id];
	}else{
		if(id==arr.length){
			return arr[id-1];
		}else{
			return arr[id+1];
		}
	}
}

Старый 23.12.2010, 16:45
Ogat вне форума Посмотреть профиль Отправить личное сообщение для Ogat Найти все сообщения от Ogat
  № 3  
Ответить с цитированием
Ogat

Регистрация: Dec 2010
Сообщений: 9
lexa2000lexa не ожидала такой заботы! спасибо огромееенннеееейшееее, гениально просто ура ура ура (море эмоций)

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

Регистрация: Dec 2010
Сообщений: 30
Немного подправил под свои цели:
Код AS1/AS2:
var arr:Array = ["rb1","rb2","rb3","rb4","rb5"]
var locRoot:MovieClip = this
function loadContent(id:String):Void{
	trace(id)
	var url:String = id+".swf"
	var contener:MovieClip = locRoot.createEmptyMovieClip("contenerload",locRoot.getNextHighestDepth());
	var contentMcl:MovieClipLoader = new MovieClipLoader();
	contentMcl.addListener(locRoot)
	locRoot.onLoadInit = function(mc){
		if(id.length==1){
			setTimeout(loadContent,10000)
		}else{
			setTimeout(loadContent,10000,nameSwf())
			}
	}
 
	contentMcl.loadClip(url,contener);
}
var nameswf:String = arr[random(arr.length)]
loadContent(nameswf)
function nameSwf():String {
	var id:Number = random(arr.length)
	if(nameswf!=arr[id]){
		nameswf = arr[id]
		return arr[id];
	}else{
		if(id==arr.length){
			return arr[id];
		}else{
			return arr[id];
		}
	}
}
но получается так, что один и тот же ролик может загрузиться три-четрыре раза подряд. Как прописать условие, чтобы после ролика грузился обязательно любой другой?

Старый 21.06.2011, 16:06
BuKT вне форума Посмотреть профиль Отправить личное сообщение для BuKT Найти все сообщения от BuKT
  № 5  
Ответить с цитированием
BuKT
 
Аватар для BuKT

блогер
Регистрация: Dec 2010
Сообщений: 237
Записей в блоге: 5
Цитата:
Как прописать условие, чтобы после ролика грузился обязательно любой другой?
Что-нибудь типа:

Код AS1/AS2:
var usedSWFsArray = [false,false] //По числу свфок
На этапе загрузки свфки ставим в соответствующее этому айди место флаг true, а вместо взятия рандома говорим следующее
Код AS1/AS2:
do {
id= random(arr.length)
} while (usedSWFsArray[id] == true)
И на выходе получаем айди свф, который ещё не был использован.
Обнулять флаги можно по желанию - при загрузке новой свф, или, допустим, по событию, когда все свф уже по разу были загружены
__________________
Дебаггер не предлагать

Старый 21.06.2011, 17:31
AlexG77 вне форума Посмотреть профиль Отправить личное сообщение для AlexG77 Найти все сообщения от AlexG77
  № 6  
Ответить с цитированием
AlexG77

Регистрация: Dec 2010
Сообщений: 30
если честно, не совсем понял, как использовать в конкретном примере

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

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

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


 


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


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