Uživatelské nástroje

Nástroje pro tento web


vyuka:13._trida_objekt._vyuziti_tridy_objekt_pro_predavani_vystupnich_hodnot_z_funkce

Třída objekt. Využití třídy objekt pro předávání výstupních hodnot z funkce

Objekt je základní kořenová třída (prapředek) všech objektových typů.

Třída Object je dynamická třída. To znamená, že můžete vytvářet instance této třídy a v těchto instancích pak definovat atributy. Toho se často využívá, když chcete funkcí vrátit více proměnných. Tak např. třída Kutil má statickou funkci function NastavCilObj(obj:Object):Object která pomocí objektu obj přijímá hodnoty x-ové a ypsilonové souřadnice objektu a souřadnice cíle, ke kterému má objekt běžet. Dále přijímá počet kroků za které se objekt dostane k cíli a vrací (opět přes objekt) hodnotu příští x-ové a ypsilonové souřadnice objektu. Hlavička funkce vypadá takto:

//ve třídě Kutil je definována následující metoda:
static function nastavCilObj(obj:Object):Object {
		//**********************************************************************
		//vstupy: 
		//  (obj.x:Number, obj.y:Number, obj.xCil:Number, obj.yCil:Number, obj.krok:Number)
		//	
		//	obj.x:Number,obj.y:Number - moje souradnice (tj. _x a _y)
		//	obj.xCil:Number, obj.yCil:Number - souradnice cíle (tj. cílové _x a _y)
		//	obj.krok:Number - počet kroků, které je nutno provést abych se dostal k cíli
		//
		//výstupy: 
		//  (obj.x,obj.y,obj.rotace,obj.vzdalenost)
		//  obj.x:Number - nová souřadnice x (tj. nové _x)
		//  obj.y:Number - nová souřadnice y (tj. nové _y)
		// obj.rotace:Number - rotace pro nasměrování k cíli (tj. _rotation)
		// obj.vzdalenost:Number - vzdalenost do cile
		//**********************************************************************

Úloha: objekt pronásledující kurzor

Řekněmě, že chceme vytvořit program, který dokáže nastavit směr šipky směrem ke kurzoru a rozpohybovat šipkou ke kurzoru. Výsledek chceme aby vypadal např. takto:

Pro přehrání obsahu potřebujete Adobe Flash Plugin.

Napíšeme skript do 1. políčka. Označíme instanci šipky jako sipka_mc a vlastní kód dáme do funkce onEnterFrame - ta se bude volat pokaždé před vykreslením snímku. Hodnoty budou předávány pomocí objektu o.

var o:Object = new Object();
onEnterFrame = function() {
	o.x = sipka_mc._x;
	o.y = sipka_mc._y;
	o.xCil = _xmouse;
	o.yCil = _ymouse;
	o.krok=4;
	Kutil.nastavCilObj(o);
	sipka_mc._rotation = o.rotace;
	sipka_mc._x=o.x;
	sipka_mc._y=o.y;
};

zdrojový kód aplikace

Úloha: Oko dívající se za kurzorem

Nakreslete oko, které se pořád dívá za kurzorem.¨

Pro přehrání obsahu potřebujete Adobe Flash Plugin.

Při tom využijte metodu nastavSmer z třídy Kutil. Tato metoda přijímá jako vstup souřadnice objektu, který se má otáčet za cílem, a souřadnice cíle za kterým se má otáčet. Vrací objekt který má atribut rotace v němž vrátí hodnotu,úhlu natočení k cíli. Na tuto hodnotu by měl být nastaven atribut _rotation (připomeňme, že rotace se nastavuje v MovieClipu vlastností _rotation, nulový úhlel je natočení doleva):

//ve třídě Kutil je definována následující metoda:
	static function nastavSmer(x:Number, y:Number, xCil:Number, yCil:Number):Object {
		//vstupy: 
		//	x,y - moje souradnice (tj. _x a _y)
		//	xCil, yCil - souradnice cíle (tj. cílové _x a _y)
		//výstupy:
		// v.rotace - rotace pro nasměrování k cíli (tj. _rotation)
        ...

Nejprve si naprogramujeme třídu Oko, která nastavuje pozici oka a otáčí zornicemi:

class oko extends MovieClip {
	var zornice_mc:MovieClip;
	function oko() {
		zornice_mc._rotation = 0;
	}
	function koukejSmerem(smer:Number) {
		zornice_mc._rotation = smer;
	}
	function get sX() {
		return this._x;
	}
	function get sY() {
		return this._y;
	}
	function set sX(x:Number) {
		this._x = x;
	}
	function set sY(y:Number) {
		this._y = y;
	}
}

Vlastní klip uděláme tak, že do prvního framu napíšeme skript, který otáčí za kurzorem dvě instance oka, oko1 a oko2. Nejdříve nastavíme x-ovou souřadnici pro každé oko (oko1.sX=100 a oko2.sX=300, a poté si vytvoříme objekt výsledek, do kterého nám v atributu rotace statická funkce Kutil.nastavSmer vrátí potřebné natočení ke kurzoru. Souřadnice kurzoru xmouse a ymouse a souřadnice obou instancí třídy oko dáme jako vstupní parametry této funkce. Výsledné natočení obdržíme v atributu výsledek.rotace, a ten dáme jako vstupní parametr metody koukejSmerem třídy Oko, která obě oči natočí příslušným směrem.

Vše zabalíme do funkce onEnterFrame, která se bude neustále vykonávat před každým vykreslením sníámku.

V prvním snímku tedy budeme mít následující skript:

oko1.sX = 100;
oko2.sX = 300;
 
 
var výsledek:Object=newObject;
function onEnterFrame() {	
	výsledek = Kutil.nastavSmer(oko1._x, oko1._y, _xmouse, _ymouse);	
	oko1.koukejSmerem(výsledek.rotace);
        výsledek = Kutil.nastavSmer(oko2._x, oko2._y, _xmouse, _ymouse);	
	oko2.koukejSmerem(výsledek.rotace);
}

Zdrojový text celého příkladu je zde

vyuka/13._trida_objekt._vyuziti_tridy_objekt_pro_predavani_vystupnich_hodnot_z_funkce.txt · Poslední úprava: 2007/06/06 04:58 autor: kofranek