// initialize jwplayer var playerInstance = jwplayer('player'); // player dom elements var playerContainerEl = document.querySelector('.player-container'); // returns video player position from top of document function getElementOffsetTop(el) { var boundingClientRect = el.getBoundingClientRect(); var bodyEl = document.body; var docEl = document.documentElement; var scrollTop = window.pageYOffset || docEl.scrollTop || bodyEl.scrollTop; var clientTop = docEl.clientTop || bodyEl.clientTop || 0; return Math.round(boundingClientRect.top + scrollTop - clientTop); } // returns the current y scroll position function getScrollTop() { var docEl = document.documentElement; return (window.pageYOffset || docEl.scrollTop) - (docEl.clientTop || 0); } // configure jwplayer instance playerInstance.setup({ autostart: true, playlist: 'https://cdn.jwplayer.com/v2/playlists/mYdavspX', primary: 'html5', setFullscreen: true, width: '100%' }); // when jwplayer instance is ready playerInstance.on('ready', function() { var config = playerInstance.getConfig(); var utils = playerInstance.utils; // get height of player element var playerHeight = config.containerHeight; // flag determining whether close has been clicked var closed = true; // CHANGED // flag determing whether player is playing var playing = false; // ADDED // eventhandler for when close button is being pressed document.getElementsByClassName('icon-close')[0].addEventListener('click', () => { closed = true; onScrollViewHandler(); }); playerInstance.on('play', function() { closed = false; playing = true; // ADDED }).on('pause', function () { playing = false; // ADDED }).on('adPlay', function() { closed = false; // ADDED playing = true; // ADDED }).on('adPause', function() { playing = false; // ADDED }); // get player element position from top of document var playerOffsetTop = getElementOffsetTop(playerContainerEl); // set player container to match height of actual video element playerContainerEl.style.height = playerHeight + 'px'; // below we handle window scroll event without killing performance function onScrollViewHandler() { var minimized = getScrollTop() >= playerOffsetTop; if (closed && minimized) { minimized = false; jwplayer().pause(); playing = false; // ADDED } else if (!minimized && !playing) { closed = true; // ADDED } utils.toggleClass(playerContainerEl, 'player-minimize', minimized); // update the player's size so the controls are adjusted playerInstance.resize(); } // namespace for whether or not we are waiting for setTimeout() to finish var isScrollTimeout = false; // window onscroll event handler window.onscroll = function() { // skip if we're waiting on a scroll update timeout to finish if (isScrollTimeout) return; // flag that a new timeout will begin isScrollTimeout = true; // otherwise, call scroll event view handler onScrollViewHandler(); // set new timeout setTimeout(function() { // reset timeout flag to false (no longer waiting) isScrollTimeout = false; }, 80); }; });

Treyarch have just released a trailer for their newest Operation titled “Spectre Rising” for Call of Duty Black Ops 4.

In the trailer, four new characters were shown off for the first time that will be available throughout the Operation.

  • Blackjack, the Black Market mercenary trader
  • Sarah HallBlack Ops III’s CORVUS-infected intelligence expert
  • Sergei, Reznov’s fellow Vorkuta inmate
  • Misty, from the Zombies Victis crew
  • David Mason, the protagonist of Call of Duty®: Black Ops II
  • Uncle Frank, an older Sgt. Woods from Black Ops II.

Breaking down who these characters are, Lt. Danny Blackjack aka Danny Li or as most people know him “Blackjack” first appeared in Black Ops 3’s campaign as a member of the 54 Immortals. Nowadays, ol’ Danny is manning the Black Market in Black Ops 4 where he’s sporting more hair and more cybernetic limbs.

Sarah Hall hasn’t appeared in a Call of Duty since Black Ops 3 where she played a pivotal role as the intelligence expert on John Taylor’s Team.

We’ve seen character variations in the past with Hudson and Vacation Hudson and it looks like we’re getting more of these. This version of Frank Woods differs from the one already existing in Blackout because this character model is from the future timeline of Black Ops 2’s campaign. As a 95 year old man, Woods helped David Mason hunt down Raul Menedez and even played a kickass show with Avenged Sevenfold in Black Ops 2’s after credits.

Probably the most obscure from the bunch is Sergei Kozin, a prisoner in Vorkuta that helped Reznov and Mason escape the Soviet prison in Black Ops 1.

Uncle Frank will be exclusive for Black Ops Pass owners, Misty will be a Special Order on April 30, and it is unknown how the other characters will be earned.

Also apart of Operation Spectre Rising are new maps for Black Ops Pass owners and a Blackout map update.

Check out what these new characters look like in-action below:

comments below
Brooklyn boy, born and raised. @MrBrawl96 everywhere on the World Wide Web.