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

The Witcher: Henry Cavill diz que se inspirou na voz de Geralt dos games

Henry Cavill, que interpreta Geralt de Rivia na série The Witcher, conta que buscou referências no dublador do personagem nos games, Doug Cockle - Divulgação/Montagem UOL
Henry Cavill, que interpreta Geralt de Rivia na série The Witcher, conta que buscou referências no dublador do personagem nos games, Doug Cockle Imagem: Divulgação/Montagem UOL

Guilherme Machado

Do START, em São Paulo

19/12/2019 17h00

A Netflix estreia amanhã a série The Witcher, baseada na saga de livros escrita por Andrzej Sapkowski. Mas, antes de existir o seriado, vieram games lançados pela companhia CD Projekt Red e também inspirados no universo de Geralt de Rivia, que encontraram grande sucesso internacional. Tanto, que apesar de não haver ligação entre eles e a atual série, o protagonista, Henry Cavill, buscou lá inspiração para compor seu personagem.

Em entrevista exclusiva ao UOL, ele disse que teve como referência o trabalho de Doug Cockle, que dubla a voz de Geralt nos games.

"Você está jogando o game a maior parte do tempo, não tem tempo de ter longas discussões, dessa forma é similar à série. Então evoquei a performance do Doug Cockle, fui inspirado por ela. Eu acho que se fosse só como nos livros, eu provavelmente me viraria com uma versão da minha voz natural, porque tem tanto para trabalhar e você consegue trazer várias nuances", relata ele.

Ele explica que procurou observar o estilo "rouco e sussurrado" que Cockle deu ao personagem e incorporar uma abordagem similar em sua performance.

"Eu achei minha própria versão do rouco, que é uma versão com um sotaque britânico, e um pouco mais rouca do que o estilo meio sussurrado que o Doug faz tão fantasticamente. Isso para mim foi o que eu tentei alcançar com as diferenças, encarando como um fã".

Geralt  - Divulgação - Divulgação
Geralt de Rivia, protagonista de "The Wticher", é dublado por Doucg Cockle em inglês, e Sérgio Moreno em português
Imagem: Divulgação

Agora, na Netflix, a saga de The Witcher tem espaço para encontra outro público, além de, claro, trazer o grupo de fãs que já acompanham nos livros e games. Henry ite que não sabe o que atrai tanto a atenção de novatos para a série, mas arrisca um palpite.

"Eu não sei necessariamente, não consigo falar ainda, a maioria das pessoas não viu a série. Acho que quando parte da sua imaginação está sendo trazida à vida, e se é feito bem, ou pelo menos de forma atrativa, você fica animado, porque tem esperança, esperança que seus sonhos possam ser visualizados. Acho que essa é a maravilha da TV, porque pode acontecer. Olhe para o Senhor dos Anéis, por exemplo. Todo mundo teve suas imaginações colocadas na tela, e muitos amaram", ressalta.