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

Anitta discute com fãs que cobram 'qualidade' em clipe: 'Não vai acontecer'

Anitta lança neste sábado o clipe de "Tropa", parceria com o jogo Free Fire - Reprodução/Instagram
Anitta lança neste sábado o clipe de 'Tropa', parceria com o jogo Free Fire Imagem: Reprodução/Instagram

Colaboração para Splash

29/06/2022 18h16

A cantora Anitta, de 29 anos, discutiu nas redes sociais com alguns seguidores que pediram por mais qualidade em seus videoclipes. A artista afirmou que tem procurado manter um padrão em suas produções audiovisuais, mas que o mesmo é limitado por questões orçamentárias.

A confusão começou após o comentário de um internauta sobre o teaser do clipe de "Tropa", que Anitta lança no próximo sábado em parceria com o game Free Fire. "É esse tipo de clipe que queremos, Anitta! Com muita qualidade e cenários", 'exigiu' o rapaz, por meio do Twitter.

A poderosa não demorou a responder. "Infelizmente não vai acontecer meu amor. O dinheiro gasto nesse clipe dava para eu gravar de seis a oito clipes. Agradeço ao Free Fire, que não economizou em nada e não fez exigências no clipe, então tudo pode ser feito exatamente como eu pedi."

"Gasta do seu próprio bolso, amor, até porque você vai continuar ganhando. Se entregar sempre qualidade, muita gente vai se interessar e vai te dar o retorno esperado. Acho que o problema às vezes são uns clipes básicos, que não têm nada de novo, e por isso não gera interesse de ver", apontou outra twitteira.

Mais uma vez, Anitta não deixou por menos. "Pois tu acha que eu faço o quê? É do meu bolso mesmo. Tá achando que meu dinheiro é infinito, é? Tu acha que não tenho jatos e joias e mansões por aí por quê? Foi tudo nas entregas de artista de milhões", contestou, entre risos, a popstar. "Sem contar doação, amigo que tá no perrengue, família, fã que, quando tá ando por necessidades, me manda e a gente resolve (tudo em segredo, óbvio)... Se não fosse todos esses babados eu já estava era de jato para tudo quanto é canto, só esbanjando férias [risos]"