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

Roberto Sadovski

OPINIÃO

Texto em que o autor apresenta e defende suas ideias e opiniões, a partir da interpretação de fatos e dados.

Pancadaria chique: Briga de monstros salva 'Godzilla vs. Kong' do tédio

Colunista do UOL

06/05/2021 16h37

Receba os novos posts desta coluna no seu e-mail

Email inválido

O "monstroverso" do cinema moderno, iniciado em 2014 com a nova versão de "Godzilla", chega ao auge com o combate das criaturas mais festejadas da história. Mas nem só de espetáculo vive um bom filme, o que fica dolorosamente evidente em "Godzilla vs. Kong".

Primeiro, a parte boa. "Godzilla vs. Kong" é mesmo um espetáculo. É o tipo de filme concebido para a experiência da sala de cinema, com imagem cristalina e som bombando. Pode parecer irônico que ele tenha estreado em meio à pandemia do coronavírus, mas aparentemente ver monstros se pegando é justamente o que as plateias queriam.

Lançado globalmente quando os cinemas lentamente voltam a um semblante de normalidade - menos no Brasil, claro, onde as medidas de isolamento e a ameaça do vírus estão longe de acabar -, "Godzilla vs. Kong" faturou mais de US$ 400 milhões, maior lançamento hollywoodiano desde "Bad Boys Para Sempre", e terceiro maior filme de 2021 até agora, atrás de uma dupla de produções chinesas.

gvk stare - Warner - Warner
Round one: FIGHT!
Imagem: Warner

O diretor Adam Wingard, mais à vontade do que no remake "Bruxa de Blair" e ou no terrível "Death Note", mostra habilidade em construir as cenas em que Kong e Godzilla se atracam - seja no meio do oceano, seja reduzindo Hong Kong a pó. A composição digital é perfeita, a destruição é em grande escala, não existe um pixel desperdiçado.

Pena que detalhes como "narrativa" e "desenvolvimento de personagens" entrem no caminho e atrapalhem a pancadaria sublime promovida em "Godzilla vs. Kong". Como os monstros não seguram um filme sozinhos, eles precisam de humanos e seus esquemas para emoldurar a ação. Se não nos importamos com as pessoas, então toda a destruição perde qualquer peso dramático. Ao menos em teoria.

A verdade é que o papo de "queremos ver mesmo as lutas" não cola mais. Os grandes filmes de ação da história, mesmo nos deixando na beira da poltrona, são ancorados em bons personagens e uma boa trama. De "Os Caçadores da Arca Perdida" a "John Wick", de "Jurassic Park" a "Mad Max: Estrada da Fúria", chegamos pelo espetáculo, ficamos pela conexão. A Marvel, hoje a maior série cinematográfica da história, entendeu como a fórmula funciona desde "Homem de Ferro".

Em "Godzilla vs. Kong", a trama é mera desculpa e não sustenta o fiapo do roteiro. É alguma coisa envolvendo corporações malignas querendo se apropriar da energia natural que alimenta os monstros (o que?), usando Kong como isca para atrair Godzilla (como é?) e, no fim, revelar sua própria aberração artificial para substituir os bichos como "predador alfa" na Terra (repete?). Ah, e tem uma menina que consegue se comunicar com o gorila. Por motivos de "o roteiro pede".

Filmes de fantasia não têm obviamente nenhum compromisso com realismo. Guillermo Del Toro dobrou as leis da física com kaijus e robôs gigantes em "Círculo de Fogo", mas deixou claro que era uma história sobre pessoas. O próprio "Godzilla" de 2014 trazia destruição em escala planetária, mas ainda contava uma história de pais e filhos, de um casal apaixonado, de coisas que temos a perder.

Aqui a história fantástica não encontra sustentação no drama humano. Fica difícil acreditar em uma Terra oca habitada por criaturas fantásticas quando os personagens de carne e osso são vergonhosos, com o constrangimento estampado em gente boa como Alexander Skarsgård, Rebecca Hall e Bryan Tyree Henry.

gvk gente - Warner - Warner
Alexander Skarsgård e Rebecca Hall com olhar perdido (sem atuação!)
Imagem: Warner

O filme segue duas narrativas paralelas. A primeira mostra Kong na Ilha da Caveira (apresentados no divertido filme de 2017), agora uma prisão que mantém a "" do gorila escondida do mundo exterior (como é?). Mas a corporação malvada precisa dele solto, então chega de férias.

Já a segunda continua a trama de "Godzilla: O Rei dos Monstros", de 2019, com Millie Bobby Brown agindo como protetora voluntária do lagartão atômico. A estrela de "Stranger Things" precisa comer muito feijão para articular algo além das duas expressões que ela traz aqui (assustada ou furiosa), mas não há o que fazer quando o material à disposição é tão esquálido.

Falta a Adam Wingard a habilidade em converter espetáculo em deslumbramento genuíno. Gareth Edwards equilibrou estes elementos em "Godzilla", e Jordan Vogt-Roberts soube se divertir com eles em "Kong - A Ilha da Caveira". Ao menos Wingard se sai ligeiramente melhor do que Michael Dougherty: ao contrário de "Godzilla: Rei dos Monstros", ao menos aqui a gente consegue ver o que está acontecendo.

Quando os monstros se pegam é inegável que "Godzilla vs. Kong" acorda de seu torpor - no cinema ainda mais, já que a mixagem de som aqui é desenhada para explodir tímpanos. É quase - quase! - o bastante para esquecer do tédio em todo o resto, quando humanos histéricos correm de um lado para outro, sem que a gente dê a mínima para o que vai acontecer a eles. Sim, é uma batalha. E, sim, há um vencedor. Mas não seria mal se, entre o torpor e o espetáculo, fôssemos nós.