;(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; // 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(); })();
PUBLICIDADE
  • Assine
Topo

OPINIÃO

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

'As Agentes 355' conta com grande elenco feminino metendo a porrada

As Agentes 355 - Divulgação
As Agentes 355 Imagem: Divulgação

Fernanda Talarico

De Splash, em São Paulo

25/01/2022 04h00

Os últimos meses têm sido bastante positivos para os fãs de filmes de espionagem, afinal, foram lançados diversos títulos do gênero, como "007 - Sem Tempo Para Morrer" e "King's Man: A Origem". Agora, um novo longa com uma trama sobre agentes secretos chega aos cinemas: "As Agentes 355".

O principal motivo que faz com que o título ganhe destaque em meio a tantos sendo lançados é a quantidade de nomes importantes no elenco, como Jessica Chastain ("X-Men: Fênix Negra"), Penélope Cruz ("Volver"), Bingbing Fan ("X-Men: Dias de Um Futuro Esquecido"), Diane Krueger ("Bastardos Inglórios"), Lupita Nyong'o ("Pantera Negra"), Sebastian Stan ("Vingadores: Ultimato") e Édgar Ramirez ("Wasp Network: Rede de Espiões"). Quem comanda tantos artistas de renome é o diretor Simon Kinberg, que trabalhou ao lado de Chastain no questionável "X-Men: Fênix Negra", filme que desagradou uma boa parte da crítica e dos fãs dos heróis da Marvel.

Agora, com "As Agentes 355", Kinberg tenta se redimir pelo longa focado em Jean Grey e entrega uma trama de espionagem costumeira, mas ótimas cenas de ação que não economizam na violência gráfica.

A história acompanha Mace (Chastain), uma agente da CIA convocada para uma missão ao lado de Nick (Stan), seu parceiro de longa data. Juntos, eles devem recuperar um artefato tecnológico bastante perigoso e capaz de destruir o mundo. Os dois viajam a Paris e, chegando lá, caem em uma emboscada e Nick é morto. Ela segue sozinha, até precisar se juntar a Marie Schmidt (Kruger), Graciela Rivera (Cruz) e Khadijah Adiyeme (Nyong'o). Já para o final do filme, Lin Mi Sheng (Fan) também entra para o grupo.

Com uma trama cheia de reviravoltas previsíveis, o roteiro está longe de ser o motivo que prende o espectador ao filme. A narrativa é clichê e segue todos os tropos de filmes de ação que já conhecemos, como o espião duplo, a traição dentro da própria agência, a redenção de quem achávamos se tratar do vilão... Não há nada de novo nesses termos, e "Agentes 355" se torna uma espécie de "Oito Mulheres e Um Segredo" com menos glamour. O mote é salvar o mundo — como em qualquer outro filme de espionagem —, e nada é acrescentado além disso.

No entanto, um filme com tantas estrelas não é um total desperdício, e assistir às interações de personagens interpretados por atores de tanto renome faz "As Agentes 355" valer a pena. Jessica Chastain sabe como comandar o grupo principal e, ao lado de Penélope Cruz, Lupita Nyong'o e Diane Krueger, entrega cenas de ação muito bem coreografadas e que prendem a atenção de quem assiste.

O longa não poupa ninguém, e todos batem e apanham bastante, mostrando que mulheres sabem e podem muito bem estrelar filmes do gênero. Com tanto foco na ação, o título não tenta se aprofundar na história de nenhuma das personagens, bem como não tem a pretensão de criar um bom desenvolvimento de cada uma delas.

A intenção é clara: entregar um filme de ação que utilize bem os recursos visuais que estão à disposição. Todas as vezes que o roteiro tenta desviar deste norte e acrescentar drama à história, ou até mesmo alguns discursos feministas já meio batidos, o ritmo e a qualidade acabam caindo.

No geral, "As Agentes 355" é um bom filme para os amantes de boas lutas e cenas de ação, mas não vai — e também não tenta — ir muito além disso. Então, os espectadores que tiverem as expectativas calibradas poderão se divertir e aproveitar a produção.

** Este texto não reflete, necessariamente, a opinião do UOL