;(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

OPINIÃO

Nostálgico e ousado: 'Homem-Aranha 3' traz o melhor lado do herói da Marvel

Laysa Zanetti

De Splash, em São Paulo

14/12/2021 18h43

Foi um pouquíssimo inspirado "Homem-Aranha: Longe de Casa" que fechou os trabalhos da fase quatro do Universo Cinematográfico Marvel após o estrondoso "Vingadores: Ultimato" (2019). A sensação que ficou era a de estar com fome e morder um biscoito murcho.

Embora a segunda aventura-solo de Tom Holland tenha ares genéricos, que tentam a esmo preencher o vazio de Tony Stark (Robert Downey Jr.), é aquele o filme que abre caminho para um literal multiverso de possibilidades para o aguardadíssimo "Homem-Aranha: Sem Volta para Casa".

E mesmo após meses de exaustivas análises de cada detalhe dos trailers, boatos e possíveis trechos do roteiro vazados, o novo filme dirigido por Jon Watts consegue surpreender — e promete empolgar bastante a audiência.

Aqui, encontramos Peter logo após Quentin Beck, o Mysterio (Jake Gyllenhaal), revelar a identidade secreta do Homem-Aranha para o mundo. Nosso Amigão da Vizinhança tenta em vão ar despercebido entre perseguições de helicóptero e incansáveis reportagens do Clarim Diário, mas decide pedir ajuda para reverter a situação quando percebe o quanto suas ações podem prejudicar Ned (Jacob Batalon) e MJ (Zendaya).

Então, ele resolve ir atrás de Stephen Strange, o Doutor Estranho (Benedict Cumberbatch). E, sem querer querendo, acaba fazendo bagunça e atraindo para o seu universo um desfile de vilões que não são exatamente melhores amigos do Cabeça-de-Teia.

Sem entrar em spoilers ou detalhes da trama, não é difícil dizer que o filme apela para a nostalgia ao resgatar os icônicos vilões da trilogia de Sam Raimi. Doutor Octopus (Alfred Molina) e Duende Verde (um Willem Dafoe terrivelmente bom) facilmente roubam a cena e trazem o filme para si, evocando nos espectadores uma montanha-russa de emoções que só os melhores antagonistas são capazes de trazer.

Mesmo assim, as surpresas e carinhosas participações especiais não entram no caminho de uma história bem construída, que promete ser um deleite para os fãs do Teioso.

Doutor Estranho (Benedict Cumberbatch) e Peter Parker (Tom Holland) em 'Homem-Aranha: Sem Volta Para Casa' - Sony/Reprodução - Sony/Reprodução
Doutor Estranho (Benedict Cumberbatch) e Peter Parker (Tom Holland) em 'Homem-Aranha: Sem Volta Para Casa'
Imagem: Sony/Reprodução

"Homem-Aranha: Sem Volta para Casa" é, sobretudo, um filme sobre amadurecimento. É um longa que se compromete em trazer para o primeiro plano da ação os dilemas éticos de Peter Parker, e o quão corajoso ele é — ou não — para tomar as decisões mais difíceis, embora elas sejam as necessárias.

Afinal de contas, estamos diante de um Peter que está no último ano do ensino médio (uma fase turbulenta mesmo para quem não foi picado por uma aranha radioativa), forçado a enfrentar um desfile de vilões maiores que ele, sem a ajuda de seu mentor (muito menos de seus aparatos tecnológicos que quase sempre pareceram um artifício preguiçoso de roteiro).

Apesar dos amigos que não o abandonam, Peter está mais sozinho do que nunca.

Peter Parker (Tom Holland) em "Homem-Aranha: Sem Volta para Casa" - Divulgação/Sony Pictures - Divulgação/Sony Pictures
Peter Parker (Tom Holland) em "Homem-Aranha: Sem Volta para Casa"
Imagem: Divulgação/Sony Pictures

Ao invés da figura paterna de Tony, por exemplo, Peter encontra em Strange um mentor muito mais rígido e aborrecido, que não se dobra às suas vontades de garoto e está disposto a confrontá-lo a todo momento, em cada decisão equivocada.

Mais do que nunca, desde que Tom Holland assumiu o papel é exigida do ator uma maturidade emocional para encarar de frente os sacrifícios mais difíceis que vêm com o traje do Homem-Aranha.

Felizmente, o britânico de 25 anos não decepciona neste sentido. Tom se mostra um ator mais equilibrado no personagem, com um pouco do seu já conhecido ar juvenil e um pouco daquela raiva de um garoto com os sentimentos à flor da pele.

MJ (Zendaya) se prepara para voar com Peter (Tom Holland) - Sony Pictures/Divulgação - Sony Pictures/Divulgação
MJ (Zendaya) se prepara para voar com Peter (Tom Holland)
Imagem: Sony Pictures/Divulgação

Holland = Parker

Mesmo assim, o filme perde força nas motivações dos personagens. O conflito principal tem resoluções relativamente simples, cujos empecilhos são criados pelo roteiro sem considerar a própria evolução emocional que o protagonista já traz consigo. É como se ele estivesse aprendendo novamente uma lição que já aprendeu. Ou deveria.

Neste sentido, é como se o longa empregasse certa correção de curso para explicar quem é este Peter Parker, ou reapresentá-lo para quem já o conhece desde "Capitão América: Guerra Civil" (2016).

Fora das sombras de Tony Stark, o garoto do Queens aprende a trilhar sua própria jornada e torna-se, de verdade, o herói altruísta que conquistou fãs de quadrinhos mundo afora com seu carisma, sua inteligência e sua falta de dinheiro.

Estamos falando do terceiro filme-solo de Tom Holland como Peter Parker. Mas, de certa forma, é como se só agora ele estivesse mesmo se tornando o Homem-Aranha.

Ah, e uma dica: permaneça na sessão até o final dos créditos.