;(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 explica sucesso de 'The Mandalorian' em nova fase de Star Wars

 Din Djarin (Pedro Pascal) e Grogu na terceira temporada de "The Mandalorian" - Lucasfilm/Divulgação
Din Djarin (Pedro Pascal) e Grogu na terceira temporada de 'The Mandalorian' Imagem: Lucasfilm/Divulgação

De Splash, em São Paulo

04/03/2023 04h00

"The Mandalorian" está de volta, mais de dois anos depois do final da 2ª temporada e em uma realidade bastante diferente.

Apesar do tempo longe das telas, o público não está há tanto tempo assim sem ver Mando (Pedro Pascal) e Grogu, já que os dois deram as caras em outras séries que compartilham o universo de Star Wars nesse meio tempo.

Desde que Din Djarin tirou seu capacete para dar adeus à pequena criatura verde que ficou conhecida como Baby Yoda, que partiu para o treinamento Jedi com Luke Skywalker, muita coisa aconteceu. Na verdade, o reencontro entre os dois foi adiantado, em um mini-arco em "O Livro de Boba Fett", cuja primeira temporada estreou em dezembro de 2021.

Nos três últimos episódios da série estrelada por Temuera Morrison, Mando vai visitar Grogu onde Luke começou a construir sua escola Jedi. Apesar de ser poderoso com a Força, Grogu tem dificuldades com o treinamento. Sabendo que sua presença atrapalharia ainda mais o garoto, Mando vai embora sem vê-lo, após uma conversa com Ashoka Tano (Rosario Dawson).

baby yoda - Lucasfilm/Divulgação - Lucasfilm/Divulgação
Grogu a por evolução em terceira temporada de 'The Mandalorian'
Imagem: Lucasfilm/Divulgação

Luke também confidencia com Ashoka, e oferece a Grogu uma escolha: a armadura de Beskar deixada por Mando ou o Sabre de Luz que pertenceu ao Mestre Yoda. Se escolher o Sabre, Grogu recebe o treinamento de Jedi, mas não pode mais ver seu pai. Se escolher a armadura, abandona o treinamento e retorna para a vida de Mandaloriano. Naturalmente, ele escolhe voltar para Mando.

Isso nos deixa diretamente na terceira temporada, com uma nova jornada pronta para Grogu e Din Djarin, que se destina para Mandalore.

"Tivemos um reencontro muito espontâneo e repentino em 'O Livro de Boba Fett', no episódio final, com Grogu vindo ao resgate do Mandaloriano. Eu amo a ideia de algo que era tão esperado acontecer no meio de uma sequência de ação, preenchendo a lacuna entre as temporadas 2 e 3, e também lidando com o doloroso adeus e a experiência satisfatória de vê-los juntos novamente", conta Pedro Pascal, em entrevista a Splash.

Para o ator, cujo personagem se tornou uma referência nessa nova fase da cronologia de Star Wars, tanto pela popularidade da história quanto pelo apelo do pequeno Grogu, a abordagem escolhida pela dupla de sucesso Jon Favreau e Dave Filoni para abrir o caminho para as novas séries é o que faz os projetos serem tão bem sucedidos.

"Acho que a abordagem criativa que Jon Favreau e Dave Filoni tiveram desde o início, criando a experiência para o público ter uma história de Star Wars em capítulos — e ainda, sem comprometer o nível de qualidade em termos de efeitos visuais e design de produção", opina, sobre o que causa o sucesso dos novos formatos das histórias.

"[Isso] eleva [as tramas] no que diz respeito à nova tecnologia, e cria uma experiência visual que corresponde à dos filmes que pudemos ver na tela grande, mas não se limita a um longa-metragem: tem tempo."