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

Nintendo anuncia Switch Lite: novo portátil chega em setembro por US$ 200

Lite é a versão portátil do Switch original lançado em 2017 - Divulgação
Lite é a versão portátil do Switch original lançado em 2017 Imagem: Divulgação

Do START, em São Paulo

10/07/2019 10h00

A Nintendo revelou nesta quarta-feira (10) o Switch Lite, uma versão menor e mais barata do console lançado em 2017, e com uma diferença fundamental: o Lite é exclusivamente portátil, ao contrário do Switch original, que pode se transformar em um console ligado na TV.

O novo portátil será lançado em 20 de setembro de 2019 por US$ 200 no mercado americano (US$ 100 a menos que o Switch), e estará disponível em três cores: cinza, amarelo e turquesa. Em novembro, serão lançadas as versões do Lite inspiradas em "Pokémon Sword e Shield", também por US$ 200.

Segundo a Nintendo, o Lite será compatível com todos os jogos de Switch que funcionam no modo portátil.

As principais diferenças em relação ao console original são uma tela menor (de 6.2 polegadas para 5.5), e um aparelho ligeiramente mais leve, com uma bateria que deve durar um pouco mais: até 7 horas, contra até 6,5 horas da versão console, segundo informações da Nintendo. E, além de não ter conectividade com TVs, o Lite também não tem controles removíveis: agora tudo é uma peça só.

Switch Lite - Divulgação - Divulgação
Switch Lite será lançado em três cores: cinza, amarelo e turquesa
Imagem: Divulgação

Primeiras impressões

Segundo reportagem da CNET, que testou o aparelho, o Lite tem o tamanho equivalente a "um Switch sem um dos Joy-Cons". O teste diz que "... a tela de 5.5 polegadas deixa a resolução da tela de 720 pixels mais nítida do que na tela de 6.2 do Switch. Mas, em alguns casos, é mais difícil ler letras pequenas."

Outro detalhe importante é que no lado esquerdo do portátil agora temos um direcional em cruz "legítimo", em uma peça só, ao contrário dos quatro botões direcionais separados do Switch original.

A CNET destaca alguns pontos positivos. Segundo o site, foi possível jogar "Zelda: Breath of the Wild", "Mario Kart 8" e "Super Mario Odissey" sem nenhuma perda de desempenho.

Ao mesmo tempo, alguns detalhes fazem falta: como o Lite não tem vibração nos controles (o famoso "rumble"), a CNET diz fica estranho jogar "Mario Kart" sem esse , por exemplo. "É possível resolver se você parear um controle-com-rumble, mas eu duvido que faria isso", conta o repórter.

Switch x Lite - Reprodução - Reprodução
Comparação no site da Nintendo entre o Switch original e a versão Lite
Imagem: Reprodução