sprawdzanie warunku na bierzaco (AS3)

Technologia Flash, czyli animacja na potrzeby stron WWW to świat daleko odbiegły od zwykłego programowania i kodu. Zapytaj o pomoc i podziel się z nami Twoimi problemami z zakresu Flasha.
goku
Posty: 7
Rejestracja: pn lut 15, 2010 6:45 pm

sprawdzanie warunku na bierzaco (AS3)

Post autor: goku »

Witam

Zrobilem sobie galerie w ktorej sa sobie 3 miniaturki skonwertowane na buttony. Owe buttony sa wrzucone do tablicy p123. Chcialbym zeby po kliknieciu przycisku, ktory zmienia galerie na kolejne 3 miniaturki, poprzednie miniaturki robily sie corazbardziej przezroczyste i po osiagnieciu alpha ==0.01 film przechodzil do nastepnej klatki. Napisalem taki kod (dzieki Marek;p):

Kod: Zaznacz cały

var przez =1;
var p123:Array = new Array(p1m_btn, p2m_btn, p3m_btn);

function przezro(element:*, index:int, arr:Array):void {
	element.alpha = przez;
	
}
function bardziejprzezro(evt:Event):void
{
	
	p123.forEach(przezro);
	przez -= .02;
	if(przez <=0.06)
	{
		przez = 0.05;
		stage.removeEventListener(Event.ENTER_FRAME, bardziejprzezro);
	}
}
i taki kod dla przycisku:

Kod: Zaznacz cały

function prawojedz(evt:MouseEvent):void
{
	stage.addEventListener(Event.ENTER_FRAME, bardziejprzezro);
	if(p123[0].alpha <= 0.1)
	{
		nextFrame();
	}
}
Ikonki staja sie przezroczyste jednak po osiagnieciu przezroczystosci mniejszej niz 0.1 film nie idzie do nastepnej klatki poniewaz warunek nie jest na bierzaco sprawdzany. Oczywiscie jak dodam

Kod: Zaznacz cały

p123[0].addEventListener(Event.ENTER_FRAME, sprawdz);
function sprawdz(evt:Event):void
{
    if(p123[0].alpha <= 0.1)
	{
		nextFrame();
	}
}
wsio chodzi ok, jednak musialbym pisac podobny kod do wielu tablic;p W jaki sposob mozna napisac 1 funkcje ktora bedzie sprawdzala przezroczystosc wszystkich tablic i przerzucala film do nastepnej klatki po osiagnieciu jakiegos tam poziomu alpha?
Albo czy mozna sprawdzac parametr przez na bierzaco? Jak napisze evt.target.updateAfterEvent(); to nie dziala:/
Marek_bf
Administrator
Posty: 4419
Rejestracja: czw lut 24, 2005 2:14 am
Kontakt:

Re: sprawdzanie warunku na bierzaco (AS3)

Post autor: Marek_bf »

Kod: Zaznacz cały

var przez:Number = new Number(1);
var n:Number = new Number(0.02);
var alphaMc:Number = new Number(0);
//
var p123:Array = new Array(p1m_btn,p2m_btn,p3m_btn);
p123.forEach(klikniecie);
//
function klikniecie(element:*, index:int, arr:Array):void {
	element.addEventListener(MouseEvent.CLICK, enterframe);
}
function przezro(element:*, index:int, arr:Array):void {
	element.alpha = alphaMc;
}
function enterframe(evt:MouseEvent):void {
	stage.addEventListener(Event.ENTER_FRAME, przezroczystosc);
}
function przezroczystosc(evt:Event):void {
	alphaMc=przez -= n;
	p123.forEach(przezro);
	if (alphaMc<=0.01) {
		stage.removeEventListener(Event.ENTER_FRAME, przezroczystosc);
		nextFrame();
	}
}
//
stop();
goku
Posty: 7
Rejestracja: pn lut 15, 2010 6:45 pm

Re: sprawdzanie warunku na bierzaco (AS3)

Post autor: goku »

wczensiej sam kombinowalem i napisalem taki kod:

Kod: Zaznacz cały

var przez2:Number = 1;
var p456:Array = new Array(p4m_btn, p5m_btn, p6m_btn);

niewidzialnylewo_btn.addEventListener(MouseEvent.CLICK, lewojedz);

function lewojedz(evt:MouseEvent):void
{
	if (currentFrame ==4){
		stage.addEventListener(Event.ENTER_FRAME, zmniejsz);
	}
}
function zmniejsz(evt:Event):void
{
	p456.forEach(alfa2);
	przez2 -= 0.02;
	if(przez2 <= 0.02)
	{
		prevFrame();
	}
}
function alfa2(element2:*,index2:int, arr2:Array):void{
	element2.alpha = przez2;
}
ale powyzszy kod nie dziala:/ czemu do funkcji zmniejsz musze dodac jeszcze petle ktorej celem bedzie kolejna funkcja w ktorej bedzie wyrazenie element2.alpha = przez2; albo nie moge wrzucic do funkcji zmniejsz petli bez zadnego wyrazenia? Moze zamiast funkcji forEach mozna wrzucic pusta funkcje for?;p(dzieki za pomoc :-) analizujac twoje kody sporo sie ucze :)


No nie:/ wrzucilem powyzszy kod do klatki gdzie mam te miniaturki p4 p5 i p6 i dziala... Na samej gorze mam glowna warstwe z akcjami natomiast nizej mam sobie warstwe portrety skladajaca sie z klatek kluczowych i kiedy powyzszy kod wrzuce do warstwy akcje to nie dziala ale jak wrzuce do klatki kluczowej z miniaturkami to dziala...
ODPOWIEDZ