Flash tiptrik - kolečko myši

11.1.2007· Autor: Ondřej Brichta· Počet komentářů: 11

Kolečko na myši najde asi každý z nás, tak proč jej nevyužít k vytvoření zajímavých efektů či funkcích ve Flashi? Tato možnost zde je, a proto se dnes podíváme na zajímavé ukázky použití prostředního kolečka na myši.

Naslouchání kolečku

Abychom mohli sledovat události probíhající na myši, musíme si vytvořit objekt - listener, který bude detekovat jednotlivé události. Všichni dobře známe onRelease, onPress události, které patří k objektu myši. Pohyb pomocí kolečka myši je detekován událostí události: onMouseWheel.

Použití této události může vypadat takto:

var mouseListener:Object = new Object();
mouseListener.onMouseWheel = function(delta) {
 trace(delta);
};
Mouse.addListener(mouseListener);

K objektu pro detekci rolování kolečkem myši připojíme funkci, která bude vracet delta hodnotu. Hodnota delty závisí na rychlosti a směru rolování kolečka myši. Směr rolování je určen kladnou/zápornou hodnotou a rychlost rolování určuje samotná velikost delty. Nejčastěji dostáváme hodnotu +/-3, při rychlejším rolování můžeme dostat i vyšší násobky čísla 3.

Rolování textu

Vrátíme se k článku, kdy jsme vytvořili textové pole s posuvníkem. Posuv byl možný pouze pomocí skrollbaru. Abychom umožnili pohyb i pomocí kolečka myši, můžeme k původnímu zdrojovému kódu doplnit část:

var mouseListener:Object = new Object();
mouseListener.onMouseWheel = function(delta) {
 if ((scrollbar.scroller._y-delta)>0 && (scrollbar.scroller._y-delta)<scrollbar.scrollback._height) {
 scrollbar.scroller._y -=delta;
 var procenta = scrollbar.scroller._y/scrollbar.scrollback._height;
 txt.scroll = Math.round(procenta*txt.maxscroll);
 }
};
Mouse.addListener(mouseListener);

Výsledek pak vypadá takto:


Zoomování obrázků

Další zajímavý efekt může být přibližování a oddalování obrázků při rolování kolečkem myši. Na hlavní scéně si připravíme dva MovieClipy, jejichž instance pojmenujeme „mc1" a „mc2". Budeme chtít vytvořit efekt, kdy po kliknutí na některý z MovieClipů jej „aktivujeme" a pomocí kolečka myši jej budeme moci přibližovat a oddalovat.

Pro přibližování a oddalování použijeme Tween třídu, s jejíž pomocí si připravíme následující funkci:

zoom_obj = function (obj:MovieClip, koef:Number):Void {
 zoom = 10;
 posunTyp = mx.transitions.easing.Strong.easeInOut;
 zacatek_x = obj._xscale;
 zacatek_y = obj._yscale;
 konec_x = obj._xscale+zoom*koef;
 konec_y = obj._yscale+zoom*koef;
 delka = 24;
 posun1 = new mx.transitions.Tween(obj, "_xscale", posunTyp, zacatek_x, konec_x, delka, false);
 posun2 = new mx.transitions.Tween(obj, "_yscale", posunTyp, zacatek_y, konec_y, delka, false);
};

Uvedená funkce pomocí předaných parametrů zvětší/zmenší (podle znaménka parametru „koef") objekt uvedený v parametru „obj". Dále si připravíme podobnou funkci, která bude měnit průhlednost objektů. Tu využijeme pro zvýraznění „aktivovaného" objektu:

alpha_obj = function (obj:MovieClip, from:Number, to:Number):Void {
 efectTyp = mx.transitions.easing.Strong.easeInOut;
 zacatek_a = from;
 konec_a = to;
 delka = 12;
 efect = new mx.transitions.Tween(obj, "_alpha", efectTyp, zacatek_a, konec_a, delka, false);
};

Nakonec už jen potřebujeme vytvořit listener pro kolečko myši a přiřadit akce k objektům scény:

var mouseListener:Object = new Object();
mouseListener.onMouseWheel = function(delta) {
 zoom_obj(active_mc, delta);
};
Mouse.addListener(mouseListener);
active_mc = new Object();
mc1._alpha = 50;
mc2._alpha = 50;
mc1.onPress = function():Void {
 this.swapDepths(1);
 alpha_obj(this, this._alpha, 100);
 alpha_obj(mc2, mc2._alpha, 50);
 this.startDrag();
};
mc1.onRelease = function():Void {
 stopDrag();
 active_mc = this;
};
mc2.onPress = function():Void {
 this.swapDepths(1);
 alpha_obj(this, this._alpha, 100);
 alpha_obj(mc1, mc1._alpha, 50);
 this.startDrag();
};
mc2.onRelease = function():Void {
 stopDrag();
 active_mc = this;
};

Výsledná aplikace vypadá takto:

 

Ondřej Brichta Vývojář multimediálních aplikací, šéfredaktor Flash.cz, školitel produktů Flash, Flex, Flash Media Server

Web: http://www.obria.cz |

Motto: <°))))><

Seriál: Tipy a triky

Tipy a triky je seriál zaměřený na zajímavá řešení a vylepšení flashových aplikací

Komentáře k článku  
Kliknutí kolečkem Tripl | 11.1.2007 17:51
Re: Kliknutí kolečkem OBr | 11.1.2007 17:55
Re: Re: Kliknutí kolečkem bbarmann | 11.1.2007 20:29
Re: Re: Re: Kliknutí kolečkem TINYSOFT | 16.1.2007 16:40
Re: Re: Re: Re: Kliknutí kolečkem OBr | 16.1.2007 16:58
Posun mimo scroller moom | 17.5.2007 10:55
Jeste priloha, ukázka moom | 17.5.2007 10:59
Re: Jeste priloha, ukázka OBr | 17.5.2007 11:16
Re: Re: Jeste priloha, ukázka moom | 17.5.2007 11:30
Re: Re: Re: Jeste priloha, ukázka Simon P40 | 5.9.2007 20:49
Příloha k zoomování - fla soubor chybí! GrayLite | 15.7.2008 19:05

Přihlášení uživatele