[Script Info] Title: [Events] Format: Layer, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text Dialogue: 0,0:00:01.06,0:00:04.07,Default,,0000,0000,0000,,Pojďme se podívat na další věci,\Nkteré můžeme s objekty dělat. Dialogue: 0,0:00:04.07,0:00:07.78,Default,,0000,0000,0000,,Máme zde program, který jsme \Npoužívali v tutoriálu o funkcích. Dialogue: 0,0:00:08.34,0:00:11.07,Default,,0000,0000,0000,,Program obsahuje \Nfunkci drawWinston, Dialogue: 0,0:00:11.07,0:00:14.18,Default,,0000,0000,0000,,která kreslí Winstona\Nna určitých pozicích x a y. Dialogue: 0,0:00:14.68,0:00:18.13,Default,,0000,0000,0000,,A pak zde dolů čtyřikrát\Nvoláme drawWinston, Dialogue: 0,0:00:18.13,0:00:21.04,Default,,0000,0000,0000,,ale pokaždé s jinými \Nsouřadnicemi x a y. Dialogue: 0,0:00:21.50,0:00:25.91,Default,,0000,0000,0000,,A jak mě znáte, když se na\Ntyto čtyři řádky kódu podívám, Dialogue: 0,0:00:25.91,0:00:32.25,Default,,0000,0000,0000,,hned vidím, jak jsou si podobny\Na chci namísto toho použít cyklus. Dialogue: 0,0:00:33.20,0:00:35.80,Default,,0000,0000,0000,,Uvnitř cyklu by kód\Nstačilo zavolat jenom jednou, Dialogue: 0,0:00:35.80,0:00:39.17,Default,,0000,0000,0000,,přičemž by se pokaždé\Nzměnily souřadnice x a y. Dialogue: 0,0:00:39.86,0:00:45.34,Default,,0000,0000,0000,,Abychom to provedli, musíme najít\Nzpůsob, jak uložit pozice x a y jako pole. Dialogue: 0,0:00:45.34,0:00:47.67,Default,,0000,0000,0000,,Tak uděláme cyklus. Dialogue: 0,0:00:47.67,0:00:49.90,Default,,0000,0000,0000,,Máme dvě řady hodnot, Dialogue: 0,0:00:49.90,0:00:56.03,Default,,0000,0000,0000,,takže bychom mohli mít dva pole,\Njedno pro pozici x a druhé pro y. Dialogue: 0,0:00:56.03,0:01:02.05,Default,,0000,0000,0000,,Jako pozici x můžeme mít\N99, 294, 101 a 294. Dialogue: 0,0:01:02.28,0:01:08.81,Default,,0000,0000,0000,,Pro pozici y použijeme\N117, 117, 316, 316. Dialogue: 0,0:01:09.56,0:01:11.59,Default,,0000,0000,0000,,A teď můžeme udělat cyklus: Dialogue: 0,0:01:11.59,0:01:18.66,Default,,0000,0000,0000,,for (var i = 0; \Ni < xPositions.length; i++) Dialogue: 0,0:01:18.66,0:01:22.30,Default,,0000,0000,0000,,Takže projdeme každý prvek\Npozice x a napíšeme: Dialogue: 0,0:01:22.30,0:01:30.10,Default,,0000,0000,0000,,drawWinston(xPositions[i], \NyPositions[i]); Dialogue: 0,0:01:32.01,0:01:34.94,Default,,0000,0000,0000,,Poďme zkusit, jestli to \Nfunguje a smažeme toto. Dialogue: 0,0:01:34.94,0:01:36.44,Default,,0000,0000,0000,,Funguje to! Dialogue: 0,0:01:36.44,0:01:40.28,Default,,0000,0000,0000,,Takže teď stačí přivolat\Ntento jeden řádek kódu, Dialogue: 0,0:01:40.28,0:01:45.17,Default,,0000,0000,0000,,který Winstona nakreslí pro\Nkaždou pozici x pole xPositions. Dialogue: 0,0:01:45.55,0:01:49.06,Default,,0000,0000,0000,,Můžeme jich přidat víc,\Nstačí napsat například 10. Dialogue: 0,0:01:49.06,0:01:57.95,Default,,0000,0000,0000,,Můžeme napsat 1, pak 1,\Nznovu 1 a potom 100 a 1. Dialogue: 0,0:01:58.57,0:02:02.08,Default,,0000,0000,0000,,Teď to vypadá trochu chaoticky. Dialogue: 0,0:02:02.08,0:02:05.15,Default,,0000,0000,0000,,A to se mi moc nelíbí,\Nprotože se těžko rozeznává, Dialogue: 0,0:02:05.15,0:02:08.44,Default,,0000,0000,0000,,které x náleží ke kterému y. Dialogue: 0,0:02:08.44,0:02:14.96,Default,,0000,0000,0000,,A já chci, abych se při pohledu\Nna program v párech x-y orientovala. Dialogue: 0,0:02:14.96,0:02:16.85,Default,,0000,0000,0000,,Nechce se mi dávat pozor na to, Dialogue: 0,0:02:16.85,0:02:20.76,Default,,0000,0000,0000,,abych je nad sebou \Nperfektně srovnala. Dialogue: 0,0:02:22.53,0:02:26.98,Default,,0000,0000,0000,,Chtěla bych najít jiný způsob,\Njak tyto pozice ukládat. Dialogue: 0,0:02:26.98,0:02:30.76,Default,,0000,0000,0000,,Mohli bychom je \Nuložit jako objekty. Dialogue: 0,0:02:31.00,0:02:36.14,Default,,0000,0000,0000,,Každá pozici jsou vlastně\Ndva kusy informací, x a y. Dialogue: 0,0:02:36.14,0:02:39.39,Default,,0000,0000,0000,,Mohli bychom mít objekt,\Nkterý ma vlastnosti x a y. Dialogue: 0,0:02:39.39,0:02:42.57,Default,,0000,0000,0000,,A pak bychom mohli \Nmít pole objektů, Dialogue: 0,0:02:42.57,0:02:44.96,Default,,0000,0000,0000,,které by všechny \Npozice x a y obsahovalo. Dialogue: 0,0:02:44.96,0:02:45.96,Default,,0000,0000,0000,,Pojďme to udělat. Dialogue: 0,0:02:46.26,0:02:49.39,Default,,0000,0000,0000,,Napíšeme:\N"var positions" rovná se. Dialogue: 0,0:02:49.39,0:02:51.13,Default,,0000,0000,0000,,A uvnitř bude pole. Dialogue: 0,0:02:51.13,0:02:56.11,Default,,0000,0000,0000,,Ale každý jeho element bude\Nnamísto čísla objektem. Dialogue: 0,0:02:56.36,0:02:59.23,Default,,0000,0000,0000,,Zde máme složené závorky Dialogue: 0,0:02:59.23,0:03:04.71,Default,,0000,0000,0000,,A pak napíšeme x: 99, y: 117. Dialogue: 0,0:03:05.56,0:03:08.92,Default,,0000,0000,0000,,Tím jsme uložili jednu\Nz našich pozic. Dialogue: 0,0:03:08.92,0:03:13.11,Default,,0000,0000,0000,,Teď přidáme další. Dialogue: 0,0:03:14.36,0:03:19.17,Default,,0000,0000,0000,,Napíšeme x: 294, y: 117. Dialogue: 0,0:03:19.17,0:03:24.18,Default,,0000,0000,0000,,Třetí bude x: 101, y: 316. Dialogue: 0,0:03:25.51,0:03:31.20,Default,,0000,0000,0000,,A poslední x: 294, y: 316. Dialogue: 0,0:03:31.67,0:03:34.92,Default,,0000,0000,0000,,A teď máme pole objektů, Dialogue: 0,0:03:34.92,0:03:38.08,Default,,0000,0000,0000,,ve kterém má každý objekt \Nsvoje vlastnosti x a y. Dialogue: 0,0:03:39.24,0:03:42.79,Default,,0000,0000,0000,,A tady dolů v našem cyklu for\Nzměníme toto takovým způsobem, Dialogue: 0,0:03:42.79,0:03:48.62,Default,,0000,0000,0000,,že se bude opakovat positions.legth\Na pak sem dolů předáme objekty. Dialogue: 0,0:03:48.71,0:03:53.78,Default,,0000,0000,0000,,Momentálně to předává celý objekt,\Nale my chceme předat jen x a y. Dialogue: 0,0:03:53.78,0:03:58.77,Default,,0000,0000,0000,,Takže napíšeme:\N"positions[i].x" a "positions[i].y". Dialogue: 0,0:04:00.69,0:04:04.18,Default,,0000,0000,0000,,Teď můžeme smazat\Ntyto seskupená pole. Dialogue: 0,0:04:04.56,0:04:09.58,Default,,0000,0000,0000,,Náš kód je teď mnohem hezčí\Na zároveň je mnohem čitelnější. Dialogue: 0,0:04:09.71,0:04:12.62,Default,,0000,0000,0000,,A čím více čitelného kódu, tím lépe. Dialogue: 0,0:04:13.18,0:04:16.33,Default,,0000,0000,0000,,Mimo jiné je jednoduchší \Nněco do kódu přidávat. Dialogue: 0,0:04:16.33,0:04:23.54,Default,,0000,0000,0000,,Mohla bych přidat pár souřadnic\Ns hodnotami x: 200, y: 200. Dialogue: 0,0:04:23.58,0:04:25.71,Default,,0000,0000,0000,,A v prostředku se nám \Nobjeví Winston! Dialogue: 0,0:04:27.93,0:04:30.98,Default,,0000,0000,0000,,Nyní vám ukážu něco,\Nco je ještě o něco lepší. Dialogue: 0,0:04:31.81,0:04:36.51,Default,,0000,0000,0000,,Všimněte si, že naše funkce\Nmomentálně očekává dva čísla. Dialogue: 0,0:04:36.51,0:04:39.15,Default,,0000,0000,0000,,Pak tyto dva čísla používá. Dialogue: 0,0:04:39.15,0:04:42.29,Default,,0000,0000,0000,,Můžeme naši funkci změnit tak,\Nže namísto čísel očekává objekt. Dialogue: 0,0:04:42.29,0:04:45.26,Default,,0000,0000,0000,,A pak z tohoto objektu\Nzíská hodnoty x a y. Dialogue: 0,0:04:45.26,0:04:49.56,Default,,0000,0000,0000,,To znamená, že tady dolů \Nby nám stačilo vložit objekt. Dialogue: 0,0:04:49.61,0:04:51.09,Default,,0000,0000,0000,,Pojďme to zkusit. Dialogue: 0,0:04:51.09,0:04:53.66,Default,,0000,0000,0000,,Máme zde jen objekt\Na je to pokazený. Dialogue: 0,0:04:54.07,0:04:57.68,Default,,0000,0000,0000,,A to proto, že naše funkce\Npořád očekává dva objekty. Dialogue: 0,0:04:57.68,0:04:59.85,Default,,0000,0000,0000,,A dostává pouze jeden. Dialogue: 0,0:04:59.85,0:05:02.59,Default,,0000,0000,0000,,Změníme to a řekneme, \Nže dostane facePosition. Dialogue: 0,0:05:02.59,0:05:05.07,Default,,0000,0000,0000,,A dostali jsme chybu. Dialogue: 0,0:05:05.07,0:05:06.80,Default,,0000,0000,0000,,Říká, že faceX není definováno. Dialogue: 0,0:05:06.80,0:05:10.47,Default,,0000,0000,0000,,Protože předtím jsme ho \Npoužili jako argument, Dialogue: 0,0:05:10.47,0:05:13.07,Default,,0000,0000,0000,,teď ale neexistuje a \Npředáváme pouze objekt. Dialogue: 0,0:05:13.07,0:05:21.26,Default,,0000,0000,0000,,Mohli bychom proto uložit \Npozici x objektu do proměnné faceX. Dialogue: 0,0:05:21.26,0:05:24.95,Default,,0000,0000,0000,,Říkáme tím, že máme tento objekt\Na víme, že má vlastnost x, Dialogue: 0,0:05:24.95,0:05:28.46,Default,,0000,0000,0000,,a proto ji uložíme do\Nproměnné faceX. Dialogue: 0,0:05:28.46,0:05:30.52,Default,,0000,0000,0000,,A to samé můžeme \Nudělat pro y: Dialogue: 0,0:05:30.52,0:05:33.76,Default,,0000,0000,0000,,faceY = facePosition.y Dialogue: 0,0:05:35.07,0:05:38.52,Default,,0000,0000,0000,,A zbytek funkce používá\NfaceX a faceY. Dialogue: 0,0:05:38.52,0:05:40.48,Default,,0000,0000,0000,,Musíme je ale napsat správně. Dialogue: 0,0:05:40.48,0:05:42.57,Default,,0000,0000,0000,,Pokud bychom napsali xx,\Nnebude to fungovat, Dialogue: 0,0:05:42.57,0:05:46.62,Default,,0000,0000,0000,,protože to tady dolů v našem\Npoli objektů není. Dialogue: 0,0:05:46.62,0:05:48.37,Default,,0000,0000,0000,,Musí se to tedy shodovat. Dialogue: 0,0:05:49.11,0:05:52.22,Default,,0000,0000,0000,,Je to celkem užitečné, protože\Nteď můžeme použít pole objektů, Dialogue: 0,0:05:52.22,0:05:54.42,Default,,0000,0000,0000,,dokonce i funkce pracující s objekty. Dialogue: 0,0:05:54.74,0:06:00.78,Default,,0000,0000,0000,,A jak zjistíte, vaše programy mohou\Nbýt velmi efektivní s jejich použitím dat. Dialogue: 0,0:06:00.78,0:06:04.19,Default,,0000,0000,0000,,Obzvláště párování hodnot x a y\Nje něčím velmi častým. Dialogue: 0,0:06:04.25,0:06:09.09,Default,,0000,0000,0000,,Věřím, že se vám hodí při tvorbě\Nvšech zdejších animací a kreseb. Dialogue: 0,0:06:09.09,0:06:10.99,Default,,0000,0000,0000,,Takže hurá na ta.