;(function() { window.createMeasureObserver = (measureName) => { var markPrefix = `_uol-measure-${measureName}-${new Date().getTime()}`; performance.mark(`${markPrefix}-start`); return { end: function() { performance.mark(`${markPrefix}-end`); performance.measure(`uol-measure-${measureName}`, `${markPrefix}-start`, `${markPrefix}-end`); performance.clearMarks(`${markPrefix}-start`); performance.clearMarks(`${markPrefix}-end`); } } }; /** * Gerenciador de eventos */ window.gevent = { stack: [], RUN_ONCE: true, on: function(name, callback, once) { this.stack.push([name, callback, !!once]); }, emit: function(name, args) { for (var i = this.stack.length, item; i--;) { item = this.stack[i]; if (item[0] === name) { item[1](args); if (item[2]) { this.stack.splice(i, 1); } } } } }; var runningSearch = false; var hadAnEvent = true; var elementsToWatch = window.elementsToWatch = new Map(); var innerHeight = window.innerHeight; // timestamp da última rodada do requestAnimationFrame // É usado para limitar a procura por elementos visíveis. var lastAnimationTS = 0; // verifica se elemento está no viewport do usuário var isElementInViewport = function(el) { var rect = el.getBoundingClientRect(); var clientHeight = window.innerHeight || document.documentElement.clientHeight; // renderizando antes, evitando troca de conteúdo visível no chartbeat-related-content if(el.className.includes('related-content-front')) return true; // garante que usa ao mínimo 280px de margem para fazer o lazyload var margin = clientHeight + Math.max(280, clientHeight * 0.2); // se a base do componente está acima da altura da tela do usuário, está oculto if(rect.bottom < 0 && rect.bottom > margin * -1) { return false; } // se o topo do elemento está abaixo da altura da tela do usuário, está oculto if(rect.top > margin) { return false; } // se a posição do topo é negativa, verifica se a altura dele ainda // compensa o que já foi scrollado if(rect.top < 0 && rect.height + rect.top < 0) { return false; } return true; }; var asynxNextFreeTime = () => { return new Promise((resolve) => { if(window.requestIdleCallback) { window.requestIdleCallback(resolve, { timeout: 5000, }); } else { window.requestAnimationFrame(resolve); } }); }; var asyncValidateIfElIsInViewPort = function(promise, el) { return promise.then(() => { if(el) { if(isElementInViewport(el) == true) { const cb = elementsToWatch.get(el); // remove da lista para não ser disparado novamente elementsToWatch.delete(el); cb(); } } }).then(asynxNextFreeTime); }; // inicia o fluxo de procura de elementos procurados var look = function() { if(window.requestIdleCallback) { window.requestIdleCallback(findByVisibleElements, { timeout: 5000, }); } else { window.requestAnimationFrame(findByVisibleElements); } }; var findByVisibleElements = function(ts) { var elapsedSinceLast = ts - lastAnimationTS; // se não teve nenhum evento que possa alterar a página if(hadAnEvent == false) { return look(); } if(elementsToWatch.size == 0) { return look(); } if(runningSearch == true) { return look(); } // procura por elementos visíveis apenas 5x/seg if(elapsedSinceLast < 1000/5) { return look(); } // atualiza o último ts lastAnimationTS = ts; // reseta status de scroll para não entrar novamente aqui hadAnEvent = false; // indica que está rodando a procura por elementos no viewport runningSearch = true; const done = Array.from(elementsToWatch.keys()).reduce(asyncValidateIfElIsInViewPort, Promise.resolve()); // obtém todos os elementos que podem ter view contabilizados //elementsToWatch.forEach(function(cb, el) { // if(isElementInViewport(el) == true) { // // remove da lista para não ser disparado novamente // elementsToWatch.delete(el); // cb(el); // } //}); done.then(function() { runningSearch = false; }); // reinicia o fluxo de procura look(); }; /** * Quando o elemento `el` entrar no viewport (-20%), cb será disparado. */ window.lazyload = function(el, cb) { if(el.nodeType != Node.ELEMENT_NODE) { throw new Error("element parameter should be a Element Node"); } if(typeof cb !== 'function') { throw new Error("callback parameter should be a Function"); } elementsToWatch.set(el, cb); } var setEvent = function() { hadAnEvent = true; }; window.addEventListener('scroll', setEvent, { capture: true, ive: true }); window.addEventListener('click', setEvent, { ive: true }); window.addEventListener('resize', setEvent, { ive: true }); window.addEventListener('load', setEvent, { once: true, ive: true }); window.addEventListener('DOMContentLoaded', setEvent, { once: true, ive: true }); window.gevent.on('allJSLoadedAndCreated', setEvent, window.gevent.RUN_ONCE); // inicia a validação look(); })();
  • AssineUOL
Topo

Reunião do terceirão acaba em morte em Depois da Festa, série do Apple TV+

"Depois da Festa", nova série da Apple TV+ - Divulgação/ Apple TV+
'Depois da Festa', nova série da Apple TV+ Imagem: Divulgação/ Apple TV+

Fernanda Talarico

De Splash, em São Paulo

28/01/2022 04h00

Reunir os amigos do colegial depois de muitos anos sem se encontrar parece uma boa ideia, não? Mas, quando um assassinato acontece entre um dos colegas, a festa em questão se torna quase que literalmente um velório. Essa é a premissa de "Depois da Festa", série de oito episódios que chega hoje ao Apple TV+.

Criada por Christopher Miller e Phill Lord (de "Homem-Aranha No AranhaVerso"), a produção acompanha o famoso "churrasco do terceirão" depois de 15 anos de formados. A turma se junta para um evento que acontece na própria escola e, depois, se encontra para um after na casa de Xavier (Dave Franco) um famoso cantor que se formou com eles. No entanto, o famoso morre e começa uma investigação para descobrir quem, entre os convidados, o matou.

Seguindo a ideia do whodunnit, o gênero de filmes de investigação que tenta descobrir quem é o assassino, "Depois da Festa" aproveita a investigação e a curiosidade do público para "testar" algumas coisas novas em séries de televisão Uma delas é mudança de gênero que acontece a cada episódio.

Cada capítulo é protagonizado por um personagem diferente, que é quem está sendo entrevistado pela Detetive Danner (Tiffany Hadish). Neles, somos apresentados aos mais diversos gêneros de produções cinematográficas. Por exemplo, o primeiro episódio, com Aniq (Sam Richardson), é estruturado como uma comédia romântica. Já o capítulo de Yasper (Ben Schwartz), é um musical, entre outros.

Cena de 'Depois da Festa', série que mistura gêneros em episódios - Divulgação/ Apple TV+ - Divulgação/ Apple TV+
Cena de 'Depois da Festa', série que mistura gêneros em episódios
Imagem: Divulgação/ Apple TV+

"A experiência de criar esses diferentes panos de fundo foi bastante desafiadora, porque cada episódio tinha o seu próprio 'filme', com os seus próprios estilos de câmera, suas próprias roupas, músicas, e mesmo os atores tendo que interpretar diferentes lados dos personagens", conta Christopher Miller em entrevista para jornalistas na qual Splash esteve presente.

"Foi realmente desafiador, mas esse é o tipo de coisa que Phil e eu gostamos de fazer. Nunca gostamos de algo que parece ser mais fácil, ou que você já tenha visto isso antes; só estamos interessados se parece algo que ainda não foi feito" diz o diretor. "E, sim, fizemos nossa vida muito difícil para nós mesmos. Mas, no final, valeu a pena."

A dupla de cineastas é bastante famosa por seu trabalho em "Homem-Aranha No AranhaVerso", animação de 2018 que rendeu o Oscar de Melhor Filme de Animação aos dois. No entanto, esse não foi o único trabalho deles no mundo dos "desenhos". Eles também são responsáveis por "A Família Mitchell e a Revolta das Máquinas", da Netflix. Então, por já estarem familiarizados com a estética e estilo, Miller elegeu o episódio que prestigia as animações como o seu favorito entre todos da temporada.

"Foi muito divertido porque fizemos muitas animações, e poder trazer isso para uma série de TV não é algo que você pode fazer na maior parte das produções. Ele tinha uma condução própria e separada dos outros, e também tivemos Lidsay Olivares, a designer de produção de 'A Família Mitchell e a Revolta das Máquinas', e ela foi responsável por todas as caricaturas dos personagens", conta.

Fizemos esse episódio por causa da série, mas também porque queríamos nos divertir.

Já para Phill Lord, o episódio musical foi um dos seus favoritos. "É ver a mágica se tornar realidade".

Entre tantos momentos de diversão, o capítulo inspirado em produções de suspense foi o mais desafiador para a dupla. "Este foi um dos que mais ficamos nervosos, porque não poderíamos usar a comédia como apoio e sermos apenas engraçados", diz Miller. "Fomos obrigados a focar bastante para construirmos o clima de tensão."

A estrela do episódio é Chelsea, personagem vivida por Ilana Glazer, atriz que, segundo os cineastas, merece todo o reconhecimento pela atuação. "Ela é tão incrível em conseguir criar toda uma vibe para a cena, ela ou uma impressão de estrela de cinema antiga. Mas, mesmo assim, ficamos pensando: como é que isso vai funcionar?"

A tensão que surgiu em torno do episódio de suspense se justifica pelo fato de os diretores serem fãs do gênero há bastante tempo. "Sempre gostei de mistérios sobre assassinatos. Eu cresci lendo Aghata Christie e assistindo à série de detetive Columbo, e todos as várias formas de whodunnit", diz Miller.

Acho que há algo sobre esse tipo de produção que te pega pelo coração.

Miller conta que a ideia de criar "Depois da Festa" nasceu da vontade prender o espectador em uma trama com reviravoltas. "Queremos que o público se envolva no quebra-cabeça. Mas também queríamos experimentar uma nova fórmula, de algo que nunca tínhamos visto antes. Assim, criamos a série."

Para descobrir quem matou Xavier e tentar desvendar o mistério da série, é preciso acompanhar "Depois da Festa", com episódios lançados todas as sexta-feiras, até oito de março, no Apple TV+.