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í