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

Como o Snyder Cut se conectaria a filme solo do Batman de Ben Affleck

Ben Affleck como Batman - Reprodução
Ben Affleck como Batman Imagem: Reprodução

Beatriz Amendola

De Splash, em São Paulo

20/03/2021 16h36

A "Liga da Justiça de Zack Snyder" (que você pode alugar no UOL Play) chegou para mostrar qual poderia ser a direção dos filmes da DC nos cinemas, caso a Warner tivesse optado por seguir com a versão do diretor nos cinemas. E ela incluiria o filme solo do Batman de Ben Affleck.

Na versão de 2017, finalizada por Joss Whedon, uma cena pós-créditos mostra Lex Luthor (Kesse Eisenber) encontrando o vilão Slade Wilson (Joe Manganiello), conhecido como Exterminador. Lex então propõe que os dois formem uma liga de vilões, em um gancho para futuros filmes da Liga da Justiça.

No Snyder Cut, a cena vai por um caminho diferente: nela, Lex revela a Wilson que o Batman é, na verdade, Bruce Wayne.

Joe Manganiello como Exterminador em 'Liga da Justiça' - Reprodução - Reprodução
Joe Manganiello como Exterminador em 'Liga da Justiça'
Imagem: Reprodução

Isso acontece porque, àquela altura, o Exterminador seria o vilão do filme solo do Homem-Morcego, a ser protagonizado e dirigido por Affleck — como bem lembrado pelo site Collider.

Em 2016, Manganiello foi escalado para viver o Exterminador no longa, e Affleck chegou a justificar sua decisão publicamente. "Ele é um ótimo vilão, e eu tive um feeling de que ele iria se encaixar bem. Sou fã do personagem, especialmente na fase dos 'Novos 52' [dos quadrinhos], e achei que iria funcionar".

No entanto, pouco depois o ator e cineasta se afastou do filme.

No início de 2017, Affleck deixou o posto de diretor, e Matt Reeves entrou em seu lugar. Meses mais tarde, surgiram os primeiros rumores de que ele deixaria também o papel de Bruce Wayne, o que só foi confirmado oficialmente no início de 2019.

Em uma entrevista publicada pelo jornal "The New York Times" no ano ado, Affleck explicou que perdeu a paixão em interpretar o personagem. Pesaram na decisão as problemáticas refilmagens de "Liga da Justiça", conduzidas por Whedon (acusado de condutas impróprias no set), e seus problemas pessoais com o alcoolismo e o fim de seu casamento com a atriz Jennifer Garner.

No fim das contas, "The Batman" mudou de cara, e será protagonizado por Robert Pattinson, como uma versão mais nova do herói. Mas Affleck irá retornar ao papel no filme solo do Flash, que deve introduzir o conceito do multiverso aos filmes da DC.