Uživatelské nástroje

Nástroje pro tento web


vyuka:kosticky_-_duplikace_movieclipu

Duplikace movieClipů

Kód realizace třídy Kostka v ActionScriptu je stejný jako v předchozím příkladu.

Konstruktor volá privátní metodu init, která inicializuje barvu vznikající kostičky tak, že volá metodu nastavNahodnouBarvu, která nastaví hodnotu vlastnosti barva na náhodně vyabrané číslo od 0 do 3. Výběr náhodného číslo od hodnoty min do hodnoty max se provándí voláním metody randRange(min:Number, max:Number):Number.

Třída Kostka má vlastnost barva - nastavování hodnoty této vlasdtnosti (pomocí function set barva je propojeno se změnou zobrazení kostičky, realizovanoui pomocí ¨¨funkce nastavBarvu(jakou:Number). Uvnitř této funkce je použit přepínač switch, který pomocí gotoAndStopposílá snímací hlavičku movieClipu na příslušné políčko filmu.

Aby nebylo nutno při nastavování vlastnosti barva si pamatovat hodnoty číselných konstant, které jsou prirazeny urcitým barvám, třída Kostka zveřejňuje konstanty CERVENA, MODRA, ZELENA, ZLUTA jako veřejné členské proměnné třídy (proto jsou typu static). Tyto konstanty je možné při nastavování hodnot vlastnosti barva využít místo číselných hodnot: např. místo názevInstance.barva=0 můžeme napsat názevInstance.barva=Kostka.CERVENA.

class Kostka extends MovieClip {
	//*****************************************
	//veřejné členské proměnné
	static var CERVENA:Number = 0;
	static var MODRA:Number = 1;
	static var ZELENA:Number = 2;
	static var ZLUTA:Number = 3;
	//*******************************************
	//privátní členské proměnné
	private var _barva:Number = CERVENA;
	//********************************************
	//Konstruktor
	function Kostka() {
		init();
	}
	//********************************************
	//Vlastnosti
	//********************************************
	function set barva(jakou) {
		nastavBarvu(jakou);
		_barva = jakou;
	}
	function get barva():Number {
		return _barva;
	}
	//*******************************************
	//Privátní metody
	//*******************************************
	//inicializace
	private function init() {
		//inicializace - zatím prázdné
		nastavNahodnouBarvu();
	}
	//
	//vrátí náhodné číslo od min do max
	private function randRange(min:Number, max:Number):Number {
		var randomNum:Number = Math.floor(Math.random()*(max-min+1))+min;
		return randomNum;
	}
	//zobrazí kostičku barvy "jakou"
	private function nastavBarvu(jakou:Number) {
		switch (jakou) {
		case CERVENA :
			this.gotoAndStop("Cervena");
			break;
		case MODRA :
			this.gotoAndStop("Modra");
			break;
		case ZELENA :
			this.gotoAndStop("Zelena");
			break;
		case ZLUTA :
			this.gotoAndStop("Zluta");
			break;
		default :
			this.gotoAndStop("Cervena");
		}
	}
	//
	//***********************************************
	//Veřejné metody
	//***********************************************
	function nastavNahodnouBarvu() {
		this.barva = randRange(0, 3);
	}
}

V prním framu vytvoříme vzorník kostiček a využijeme metodu duplicateMovieClip(nazevKlipi,hloubka,{inicializace}). Zahazování kostiček do koše provádíme stejně jako v předchozím příkladu.

Celý výkonný skript v prvním frsamu vypadá takto:

//nastavím barvy vzorníků klipu
zlutyKlip_mc.barva = Kostka.ZLUTA;
modryKlip_mc.barva = Kostka.MODRA;
cervenyKlip_mc.barva = Kostka.CERVENA;
zelenyKlip_mc.barva = Kostka.ZELENA;
//po poklepu na klip ze vzorníku vytvoříme kopii klipu
zlutyKlip_mc.onRelease = function() {
	duplikujMovieClip(this);
};
modryKlip_mc.onRelease = function() {
	duplikujMovieClip(this);
};
cervenyKlip_mc.onRelease = function() {
	duplikujMovieClip(this);
};
zelenyKlip_mc.onRelease = function() {
	duplikujMovieClip(this);
};
//
function duplikujMovieClip(ktery_mc:MovieClip) {
	var hloubka:Number = this.getNextHighestDepth();
	// vytvořím název instance nového movie clipu
	var nazevKlipu:String = "kostka"+hloubka+"_mc";
	trace("název nového klipu ="+nazevKlipu);
	//vytvoří novou kopii movieClipu 
	ktery_mc.duplicateMovieClip(nazevKlipu, hloubka, {_x:ktery_mc._x+10, barva:ktery_mc.barva});
	// nastaví u nového klipu možnost tažení
	this[nazevKlipu].onPress = function() {
		this.startDrag();
	};
	this[nazevKlipu].onRelease = function() {
		this.stopDrag();
		if (this.hitTest(kos_mc)) {
			trace("zahazuji movieClip do koše");
			this.removeMovieClip();
		}
	};
}

zdrojový text příkladu

vyuka/kosticky_-_duplikace_movieclipu.txt · Poslední úprava: 2007/05/13 19:30 autor: kofranek