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

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

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

Регистрация: Mar 2009
Сообщений: 49
Smile Фотогалерея и рандом

Добрый день!.
Взялся тут написать шапку сайта.. в ней фотогалерея.
Идея -на главной сцене 3 мувиклипа , в них "random" подгружается "random" фотографии ,через xml.

Вопрос 1, может есть исходники уже с решенной похожей задачей?

Вопрос 2. Я написал свой вариант, он работает.. вот код:
Код AS1/AS2:
//инициализация переменных ( все в первом кадре ,в мувиклипе)
var timeout:Number = new Number();
var num_rand:Number = new Number();
var my_lv:LoadVars = new LoadVars();
var num_pic: Number = new Number();
var num_mov: Number = new Number();
var cur_num1: Number = new Number();
var cur_num2: Number = new Number();
var cur_num3: Number = new Number();
var intervalId:Number = new Number();
cur_num1=0;
cur_num2=1;
cur_num3=2;
timeout=100;
num_rand=0;
num_pic=0;
num_mov=0;
loads_var();
 
btn1.onPress = function() {
 setInterval(randImage, timeout); 
}
 
function close_books() {
		trace("flag_books: ");
}
function loads_var() {
	my_lv.onData = function(src:Number) {
    if (src == undefined) {
        trace("Error loading content.");
        return;
    }
 info.text=(" "+src);
  timeout=src;
 
};
my_lv.load("photo.ini",my_lv,"GET");
 
}
 
 
//загрузка /обработка xml 
function loadXML(loaded) {
	if (loaded) {
		xmlNode = this.firstChild;
		image = [];
		description = [];
		total = xmlNode.childNodes.length;
		for (i=0; i<total; i++) {
			image[i] = xmlNode.childNodes[i].childNodes[0].firstChild.nodeValue;
			description[i] = xmlNode.childNodes[i].childNodes[1].firstChild.nodeValue;
			}
		firstImage();
		 setInterval(randImage, timeout);  // запуск фото просмотра
	} else {
		content = "file not loaded!";
	}
}
xmlData = new XML();
xmlData.ignoreWhite = true;
xmlData.onLoad = loadXML;
xmlData.load("images.xml");
/////////////////////////////////////
 
 
/////////////////////////////////////
p = 0;
 
// загрузка фотографий
this.onEnterFrame = function() {
	filesize = picture.getBytesTotal();
	filesize1 = picture1.getBytesTotal();
	filesize2 = picture2.getBytesTotal();
	loaded = picture.getBytesLoaded();
	preloader._visible = true;
	if (loaded != filesize) {
		preloader.preload_bar._xscale = 100*loaded/filesize;
	} else {
		preloader._visible = false;
		if (picture._alpha<100) {
			picture._alpha += 2;
		}
		if (picture1._alpha<100) {
			picture1._alpha += 2;
		}
		if (picture2._alpha<100) {
			picture2._alpha += 2;
		}
 
	}
};
 
// Функция подгружает разные фото в разные муви-клипы  (Фото не повторяются)
function randImage() {
num_pic=rando();
num_mov=random(3);
	trace("num_pic: " + num_rand);
 
		if (loaded == filesize) {
			if(num_mov==0)
			{
				if(num_pic!=cur_num1 & num_pic!=cur_num2 & num_pic!=cur_num3)
				{
					picture._alpha = 0;
					//intervalId = setInterval(s,500);
 
					picture.loadMovie(image[num_pic], 1);
					cur_num1=num_pic;
				}
			} 
			else if(num_mov==1)
			{
				if(num_pic!=cur_num1 & num_pic!=cur_num2 & num_pic!=cur_num3)
				{
					picture1._alpha = 0;
			picture1.loadMovie(image[num_pic], 1);
			cur_num2=num_pic;
				}
 
			}
			else if(num_mov==2)
			{
				if(num_pic!=cur_num1 & num_pic!=cur_num2 & num_pic!=cur_num3)
				{
					picture2._alpha = 0;
			picture2.loadMovie(image[num_pic], 1);
			cur_num3=num_pic;
				}
 
			}
			desc_txt.text = description[num_rand];
			//picture_num();
		}
 
}
 
//функция рандома, получение номер фотографии, отличный от предыдушего
function rando() {
trace("rando_star");
	while(num_rand==current_pos)
	{
 
	num_rand=random(total);
	trace("cur_pos "+current_pos);
	trace("num_rand "+num_rand);
	}
current_pos=num_rand;
return num_rand;
}
 
//функция , загрузки первых фотографий в мувиклипы
function firstImage() {
	if (loaded == filesize) {
		picture._alpha = 0;
		picture1._alpha = 0;
		picture2._alpha = 0;
		picture.loadMovie(image[0], 1);
		picture1.loadMovie(image[1], 1);
		picture2.loadMovie(image[2], 1);
		desc_txt.text = description[0];
		//picture_num();
	}
}
Все бы хорошо, но хотелось бы усовершенствовать.
1)Можно ли подгрузить все фотки сразу в буффер, а не делать это по мере их вызова, и как?
2)Как добавить эффект на исчезновение фотографии ,
Код AS1/AS2:
if(num_pic!=cur_num1 & num_pic!=cur_num2 & num_pic!=cur_num3)
				{
					picture._alpha = 0; //вот это строчка, он просто делает прозрачным мувик, и потом поднимает alpha уже с новой фотографией.. Как сделать ,не резкий скачок, а затухание?
3)Правильно я использую setInterval ?, ибо переодически(причину не смог выяснить), при отладке в интернете, начинает гнать как сумасшедший, но по большей части работает стабильно..


Заранее спасибо за ответы,
буду благодарен любой критики.. Ибо хочу научиться писать красиво.

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

Регистрация: Oct 2009
Сообщений: 50
Чтобы фотки загружались сразу а не по мере вызова зайди в библиотеку (F11) --> контекстное меню фотки --> Linkage -->> отмечаешь Export for ActionScript и Export in first frame.
по поводу затухания, сделай уменьшение альфа в цикле вызываемом в setInterval
например
Код AS1/AS2:
var int_ = setInterval (function ():Void { 
   if (picture._alpha >= 5){
      picture._alpha -= 5;
   } else {
      clearInterval(int_); 
   }
},100);
Поигравшись с условием цикла и временем вызова функции можно настроить плавность и время затухания

Старый 03.10.2009, 17:42
sy555 вне форума Посмотреть профиль Отправить личное сообщение для sy555 Найти все сообщения от sy555
  № 3  
Ответить с цитированием
sy555

Регистрация: Mar 2009
Сообщений: 49
Спасибо.
только по поводу подгрузки фотографий, их в библиотеке нету, т.к. они подгружаются через xml -динамически..
Можно ли как-нибудь кодом подключить? что то типо.. загрузить все фотографии в xml в буффер флеша и массив.?

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

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

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


 


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


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