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

Cruzeiro

Cruzeiro anuncia evento no metaverso com inspiração em videogames

Gabriel Lima, CEO do Cruzeiro, e Ronaldo Nazário, dono, durante coletiva que anunciou o evento - Reprodução/Twitter
Gabriel Lima, CEO do Cruzeiro, e Ronaldo Nazário, dono, durante coletiva que anunciou o evento Imagem: Reprodução/Twitter

Do UOL, em São Paulo

25/10/2022 12h55

O Cruzeiro lançou hoje (25) um evento digital com conversas e palestras sobre o clube, que é ambientado no metaverso e inspirado na experiência imersiva dos videogames. O anúncio foi feito hoje (25), pelo sócio majoritário do clube, Ronaldo Nazário, em coletiva de imprensa realizada em São Paulo.

O evento acontece entre 16 e 18 de novembro, é chamado de Cruzeiro Big Blue e reúne variados painéis sobre o clube, de jogos históricos à gestão atual, com a participação de ídolos, jogadores do atual elenco e membros da diretoria. O próprio Ronaldo, o diretor de futebol Paulo André e o técnico Paulo Pezzolano são alguns dos participantes. É como um congresso online composto por 16 mesas de assuntos ligados ao Cruzeiro. Todas são gravadas.

Estes painéis são ambientados no "Planeta Big Blue", um cenário extraterrestre composto por elementos simbólicos do Cruzeiro, como o mascote e os troféus conquistados.

Segundo o clube, a tecnologia usada foi de ponta para tornar a experiência do torcedor imersiva: foram usadas câmeras de Hollywood, a ferramenta de transmissão é a mesma da Fórmula 1 e todo o funcionamento é baseado na mesma engenharia que criou jogos de videogame famosos (Fortnite, Gears of War, entre outros).

"Existe um potencial enorme de crescimento do futebol brasileiro no mundo online, e o Cruzeiro sai na frente", diz Ronaldo. "Vamos desenvolver um novo conceito de se relacionar com estes fãs."

Objetivo é também reunir dados da torcida

O principal objetivo do evento digital é aproximar o torcedor do clube. "É muito importante a gente ter transparência com o torcedor, mostrar exatamente o que estamos fazendo e como estamos fazendo", diz Ronaldo.

Além disso, há a intenção de alimentar uma base de dados de torcedores do Cruzeiro. Para receber um ingresso gratuito, a pessoa interessada precisa fornecer nome completo, e-mail, telefone, faixa etária e cidade onde mora. É com estes dados que o clube pretende atrair parceiros comerciais.

"Queremos trabalhar todo o ecossistema. Quanto mais a gente conhece o torcedor, melhores são os produtos que podemos oferecer", resume o CEO do Cruzeiro, Gabriel Lima. "Para as marcas se juntarem a nós, precisamos saber quem é o torcedor, o que eles fazem e onde vivem."

Coletiva em São Paulo

O evento no metaverso foi anunciado em coletiva de Ronaldo e do CEO do Cruzeiro, Gabriel Lima. Os dois fizeram questão de baixar as expectativas do cruzeirense para 2023, repetindo várias vezes que o clube tem dívidas e dificuldades. Entre os convidados estavam o ídolo celeste Dirceu Lopes e o cantor Samuel Rosa, cruzeirense fanático -ambos participam de painéis do Cruzeiro Big Blue.

Cruzeiro