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

Pedro Pascal espera atender gamers com 'The Last of Us': 'Estão sedentos'

Ellie (Bella Ramsey) e Joel (Pedro Pascal) em "The Last of Us" - Liane Hentscher/HBO
Ellie (Bella Ramsey) e Joel (Pedro Pascal) em 'The Last of Us' Imagem: Liane Hentscher/HBO

De Splash, em São Paulo

13/01/2023 04h00

Adaptações de games para a dramaturgia são um desafio para os estúdios. Com as expectativas dos fãs de jogos pelo resultado nas telas. De "Mortal Kombat - A Aniquilação" (1997) a "Assassin's Creed" (2016), há um longo histórico de tentativas fracassadas de traduzir a emoção de um game para uma tela de TV ou de cinema.

Por isso, há uma forte expectativa em torno de "The Last Of Us" — sobretudo considerando que estamos falando de uma das sagas de jogos mais premiados do universo dos games. Estrela da série, Pedro Pascal afirma em entrevista a Splash que está confiante que o objetivo vai ser alcançado com a produção da HBO.

"É uma grande pressão, especialmente falando da audiência gamer. As pessoas que amam jogos estão sedentas para que a indústria do entretenimento consiga acertar. É um processo de erros e acertos e, até onde eu sei, estamos chegando cada vez mais perto"

"Tudo o que eu sei é que, falando dessa adaptação, ela vem do criador do jogo [Neil Druckmann] e do cara que ama o jogo mais do que qualquer outra pessoa no planeta [Craig Mazin]. Então, eu diria que estamos em boas mãos."

Pai do momento

Pascal se tornou o "pai espacial" mais adorado do universo de Star Wars com "The Mandalorian". A dupla com o adorado Grogu, ou Baby Yoda, conquistou corações mundo afora. Mas o ator está pronto para assumir outra "paternidade" em "The Last of Us".

Na série da HBO, Pascal vive Joel Miller, que se torna uma relutante figura paterna para Ellie (Bella Ramsey). Ele aceita a missão de levá-la de uma costa a outra dos Estados Unidos, para que ela chegue a um lugar seguro na sede de um grupo rebelde chamado Vaga-Lumes.

"Eu não faço ideia. Que situação. Eu seria um pai terrível!", responde o ator a Splash, quando questionado por que ele se transformou na figura paterna número um da cultura pop.

"Não, estou brincando. É empolgante abraçar personagens assim. A identidade de um personagem ser formada ao redor do amor por uma criança é uma forma muito rica de descobrir do que ele é capaz. Emocionalmente, é a melhor música que podemos tocar, porque o amor pode ser ameaçador, pode nos machucar facilmente, e o mundo pode ser um lugar muito ameaçador quando uma de nossas crianças está em risco."

TLOU - Liane Hentscher/HBO - Liane Hentscher/HBO
Bella Ramsey e Anna Torv, intérprete de Tess, em cena de 'The Last of Us'
Imagem: Liane Hentscher/HBO

De Lyanna Mormont para o mundo

Aos 19 anos, Bella Ramsey explodiu no mundo ao interpretar Lyanna Mormont, Senhora da Ilha dos Ursos, em "Game of Thrones". Na ocasião, a personagem criada especialmente para a série tornou-se quase imediatamente uma favorita dos fãs. Agora, Bella (que usa os pronomes ela/dela e they/them), assume mais uma personagem jovem, brava e valente.

Será que Bella tem algum receio de ser escalada sempre para personagens deste tipo?

"Eu me perguntei todos os dias por que eu", conta a Splash. "Antes de começarmos a filmar, eu só perguntava 'Por quê? [Essa sensação] é horrível. É amedrontador mas, ao mesmo tempo, é a melhor coisa que já me aconteceu. Essa é uma personagem fodona, e eu não tenho medo. Amo interpretar esse tipo de personagem."