Ефект на Флаш галерия

freegafo

Registered
Здр.
http://creative.gettyimages.com/source/ListingService/SearchAS.aspx
(щракнете в/у картинката)
опитвам се на напрявя нещо по добно......

В момента съм на сменящите се картинки.....
Но не ми харесва начина по който съм успял да го направя......
Ето кода който използвам
Код:
var photos:XML = new XML ();
var i:Number = 0;
photos.ignoreWhite = true;
photos.onLoad = function(suscess)
	{
		xmlNode = this.firstChild;
		
		url = xmlNode.childNodes[i].childNodes[0].firstChild.nodeValue;
		//photo_mc._alpha = 50;
		photo_mc.loadMovie(url);
		
	}
photos.load("photos.xml");

  //////////////////////////////////////////////////////////
 ///////////////   TIMER  /////////////////////////////////
//////////////////////////////////////////////////////////
var Time:Number = 1000;
count = function(timer)
	{
		Time-- ;
		TimeT.text = Time;
		if (Time == 0)
			{
				i++;
				if (i >= xmlNode.childNodes.length)
					{
						i = 0;
					}
				photo_mc._alpha=0;
				photos.onLoad(success);
				Time = 1000;
			}
			
	if (photo_mc._alpha < 100)
	{
		photo_mc._alpha += 1;
	}
	text_txt.text = photo_mc._alpha;
	}
timer = setInterval(count, 10); 




///////////////////////////////////////2/////////////////////////////////////////////////



var photos:XML = new XML ();
var i:Number = 0;
photos.ignoreWhite = true;
photos.onLoad = function(suscess)
	{
		xmlNode = this.firstChild;
		
		url = xmlNode.childNodes[i].childNodes[0].firstChild.nodeValue;
		photo_mc._alpha = 50;
		photo_mc.loadMovie(url);
		if (photo_mc._alpha != 100)
			{
				var FadeTime = 10;
				FadeTimeFunction = function(time)
				{	
					if (photo_mc._alpha != 100 and photo_mc._alpha <= 100)
					{
					FadeTime--;
					text_txt.text = photo_mc._alpha;
					}
					if (FadeTime == 0)
					{
						photo_mc._alpha += 10; 
						clearInterval(fade); 
						FadeTime = 10;
					}
				}  
			}fadecounter = setInterval(FadeTimeFunction, 0.1);
	}
photos.load("photos.xml");

  //////////////////////////////////////////////////////////
 ///////////////   TIMER  /////////////////////////////////
//////////////////////////////////////////////////////////
var Time:Number = 1000;
count = function(timer)
	{
		Time-- ;
		TimeT.text = Time;
		if (Time == 0)
			{
				i++;
				if (i >= xmlNode.childNodes.length)
					{
						i = 0;
					}
				photos.onLoad(success);
				Time = 1000;
			}
	}
timer = setInterval(count, 10);

Казаха ми че трябва да сложа setInterval в функцията photos.onLoad... ама нещо се бъгва тогава и започва сле време да сменя супер бъро картинките......

Та искам да направия картинките да се сменят както е в они сайт.... по тои начин нещо не ми харесва особенно

Благодаря предварително......

//редактирано заглавие
[b13]savage
 

B13_Savage

Registered
Вместо да слагаш сетИнтервал защо не сложиш един туйн :
Код:
tween();
function tween() {
easeType = mx.transitions.easing.None.easeNone;
asd = new mx.transitions.Tween(a_mc, "_alpha", easeType, 100, 0, 2, true);
};
a_mc е името на анимираното клипче. Можеш да добавиш и ефекти (да забързва, да забавя, дали да е това избързване в началото или пък в края на анимирането .. etc) ..
Разбра ли :) ?
 

freegafo

Registered
Благодаря ти.....

Ще те помоля да ми обясниш по подробно, защото не можах да се оправя.... :eek: ....
 

B13_Savage

Registered
Здрасти ! Нека направим така - аз сега ще ти обясня какво се трябва да направиш, пък ако не успееш и ще го напиша (най-добре е сам да се научиш).
Има много начини, по които може да го направиш. Направи таймер и при всяко стигане на 1000 (например) да пуска туйин-а, а след като свърши туйна да сменя снимката.
Ок ? :)
 

freegafo

Registered
Здр.
Успях да го направя.... така става супер!
Искам да те попитам още две неща:
1) как да направя коагато идва новата снимка да се зарежда в/у старата, като в същото време старата ибледнява отзад...

2)Как мога да направя на флаш картинките които зареждам да са с примерно 10 пиксела бял кант от всиччки страни.... (имам в предвид без да го слагам на някаква графична програма че ще се отвинтя ако са много картинките)

Благодаря.... :?:
 

B13_Savage

Registered
Ем мисля си (но за да съм сигурен трябва и да го пробвам, нямам възможност днес, чак утре).
Пробвай да сложиш на един лейър една бяла рамка, тя трябва да ти свърши работа (или си я напиши с АS).
За това със снимките .. :? ако те разбрах - настрой при определен номер една да е FadeOut единия пик, а другия да е FadeIn.
Ако не върви на никъде чак утре ще съм он, сори.
Поздрави и лека вечер :)
 

freegafo

Registered
Здр.

Аз зарейдам картинките на един и сащи мови клип... за да дам на еднта Fade Out трибва ли да са на два клипа за да могат да се застъпят една върху друга.....

А как да напиша рамката на AS
Благодаря
 

B13_Savage

Registered
Ето какво надрасках за рамчица :
Код:
var savage:MovieClip = this.createEmptyMovieClip ("savage",this.getNextHighestDepth());
draw();
function draw() {
savage.lineStyle (10, 0, 100);
savage.lineTo (0, Stage.height);
savage.lineTo (Stage.width, Stage.height);
savage.lineTo (Stage.width, 0);
savage.lineTo (0, 0);
}
Можеш да направиш един moovie clip, който да съдържа ефекта. Така ще имаш два - единият зарежда, а в другия е ефекта на сменянето. При зареждане пускаш ефекта от 2рия _mc .. Хитро, но не е лесно :)
.. имам подръка една доста добре направена галерийка, ако искаш я виж тука.

savage.lineStyle (10, 0, 100); - от този ред определяш какъв да е вида на линията :)
 

freegafo

Registered
Благодаря ти......

Докато я правя тази галерия въпросите ми никнат като гъби :eek: ....

Вчера написах една функция която оразмерява изображението ако е по голямо но получих два бъга:

1) не хваща първата картинка, ако парвата картинка е по голяма не се вкл. функцията.
-----------------------------------
втория бъг го хванах при икл. функция
-----------------------------------
2) когато зареждам изображе в дадения мулви клип и да речем че е с размери 820х600 то го зарежда като 867_582 или нещо подобно...за да видя колемината на клипа ползвам movie_mc._height & movie_mc._width


:idea:

Благодаря
 

B13_Savage

Registered
Нормално е да никнат много въпроси.
Лошото е, че не виждам причина да пропуска първото изображение, или пък да не прави точно зададени _width & _height . (тоест, няма логичекса причина това да става, явно някъде из кода си объркал :roll: )
Ти защо не ползваш готовия loader UI (компонент). Мисля, че ще ти е доста по лесно.
Поздрави :)
 

freegafo

Registered
Здр.
ето ми галерийката http://web-tourist.net/project/freegafo/gallery.html смакни я и я преименувай на .rar.... Ако може да ми кажеш защо картинките не се зареждат с нормалната големина и ако може да ми кажеш също така защо на първата картинка като активирам функцията rеsize не хваща първата картинка
 

B13_Savage

Registered
Картинките ги отвара с реалната им големина и ги зарежда в клипчето. Проблема е, че това че се намират в клип с определен размер, явно не им пречи да се виждат и извън него. Видях че си слагал маска .. да, ако сложиш маската както трябва ще се вижда само определената от теб големина. Всички картинки ги зарежда така, не съм забелязал да има някаква разлика при първа/втора/etc.
Как да решиш проблема - лично аз ползвам готово компонентче - loader . Чудно ми е защо и ти не го ползваш - в Component Inspektor има опцийка за автоматичен resize. Ползвай и ти :p
 

freegafo

Registered
Можеш ли да ми дадеш малко повече информация как да иползвам готовото компонентче - loader, и автоматичния resize

Благодаря Много
 

freegafo

Registered
Благодаря, с Loader-а се оправих.....

Изникна ми обаче един проблем... когато се зареждат картинките при бавен интернет става бавно (то това е логично), проблема е че вече зареждана картинка като се отвори пак се зарежда на ново.... Как мога да направя така че един път заредена картинката да си се пази в някакъв кеш... и да се зарежда моментално, а не да се чака отново.... :(
 

B13_Savage

Registered
Тук вече не мога много да ти помогна.
Аз все си мисля, че флаш се зарежда нейде из виртуалната памет и щом браузър отвори нещо то си се кешира автоматично.
Едно от решенията, който мога аз да ти предложа е да сложиш прелоудърчета :p , а другото е да зареждаш external флаш файлове (.swf), така те ща са кеширани и няма да им а нужда да се зареждат пак (...така си мисля...)..но на дали си струва усилията.
Лек ден и поздрави за бързия напредък :)
 

freegafo

Registered
Благодаря....
Имам още един вапрос... искам да заредя текст отстрани до всяко клипче което зареждам така
:
var photos:XML = new XML();
var i:Number = 0;
var Load:Boolean = false;
photos.ignoreWhite = true;
photos.onLoad = function(suscess) {
xmlNode = this.firstChild;
url = xmlNode.childNodes.childNodes[0].firstChild.nodeValue;
description = xmlNode.childNodes.childNodes[1].firstChild.nodeValue;
photo_mc.contentPath = url;
tween();
function tween() {
easeType = mx.transitions.easing.None.easeNone;
asd = new mx.transitions.Tween(photo_mc, "_alpha", easeType, 0, 100, 2, true);
}
};
photos.load("photos.xml");

ама не можах да го направя. :( Ако не ме разбираш какво точно искам да направя ще ти го покажа с картинки.. извинявай че така бързо обяснявам ама в момента малко бързам....

Благодаря !!!!! :wink:
 

B13_Savage

Registered
Можеш направо да ми пратиш .фла файла на savage309(at)abv.bg . Аз съм малко болен, но се надявам да имам време да го погледна и да видя дали мога да ти помогна :wink:
 

B13_Savage

Registered
Пиша нов пост за да го забележиш :)
До колкото разбрах (а то не е много :) ) искаш да напишеш текст с AS. Слагаш на фрейм това :
Код:
this.createTextField ("IME", this.getNextHighestDepth(), _x, _y, width, height);
където IME е името на новсъздаденото текстово поле, след това е параметъра оказващ дълбочината , _x - е координата по хикс, _y е по игрек, width е ширината, heigth е височината.
Ето ти и пример :
Код:
this.createTextField ("IME", this.getNextHighestDepth(), 200, 200, 50, 20);
IME.html = true
IME.htmlText = "<U>Savage rlz</U>"
Това ли ти трябваше :(
 

Горе