🎁Free Shipping on Orders Over $59🎉
Fly Orb Pro™ Flying Spinner Mini Drone Flying
Fly Orb Pro™ Flying Spinner Mini Drone Flying
Fly Orb Pro™ Flying Spinner Mini Drone Flying
Fly Orb Pro™ Flying Spinner Mini Drone Flying
Fly Orb Pro™ Flying Spinner Mini Drone Flying
Fly Orb Pro™ Flying Spinner Mini Drone Flying
Fly Orb Pro™ Flying Spinner Mini Drone Flying
1 / 7
Fly Orb Pro™ Flying Spinner Mini Drone Flying
Fly Orb Pro™ Flying Spinner Mini Drone Flying
Fly Orb Pro™ Flying Spinner Mini Drone Flying
Fly Orb Pro™ Flying Spinner Mini Drone Flying
Fly Orb Pro™ Flying Spinner Mini Drone Flying
Fly Orb Pro™ Flying Spinner Mini Drone Flying
Fly Orb Pro™ Flying Spinner Mini Drone Flying
38% OFF
Fnkus

Fly Orb Pro™ Flying Spinner Mini Drone Flying

$24.95 $39.99
0 sold
Color
Qty 999 in stock

🌟 As Seen on TikTok 🌟

The Fly Orb Pro™ is the toy of the year! It features an aerodynamic enclosed orb design allowing it to effortlessly glide through air leading to an extremely fun and addicting experience. Toss it up and watch it fly, float, glide, and climb before hovering back to your hand like magic!

"Rasengan", "The Force", "Magic" - call it whatever you want, but no matter what - you can count on the motorzied FlyOrb to make its way back into your palm after each and every throw. Let it go and watch it fly, float, glide, and climb before elegantly returning to your hand like a boomerang! Physics in action!

Attention: We are going viral on social media and have very few units left. Place your order now to ensure you get a FlyOrb before we sell out.

Safe for children! Keep your loved ones entertained and educated for hours! FlyOrb trains hand-eye coordination and makes for a fun workout - physically and mentally.

Take it with you anywhere (anytime). Small enough to fit in the palm of your hand - play with the FlyOrb whenever you feel the itch arise (whether that's in the kitchen, backyard, at the beach, or at the park!).

Lights up in the dark! Neon LED lights lining the outside and inside of the FlyOrb make it an eyecatching toy extremely fun to play with at dusk.

JUST SHAKE IT

Push the power button, hold the FlyOrb upright, and then shake to start. It's that simple.

TRICK GUIDE

CAPTAIN BOOMERANG

Throw your FlyOrb into the air and watch it smoothly curve in the air to make a rendezvous with your original throwing hand. Yes, it really does this. 

SAFETY FIRST 

The FlyOrb features an aerodynamic enclosed orb design that gives it that smooth flight when you’re throwing it. Your hands are always 100% safe when dealing with this floaty boi.

DURABLE 

Durable, orb design protects the FlyOrb from trauma caused by bumps, falls, drops, and other forms of blunt impact. Keep the good times spinning.

LONG BATTERY LIFE

A 25-minute charge gives your FlyOrb 30 minutes of operating time.

* Battery life depends on circumstances. For example, 30 minutes of continuous use in a single session or multiple 8-10 minute sessions. Additionally, factors like wind can affect power usage as well.

const TAG = 'spz-custom-painter-button-animation'; const MAX_ITERATION_COUNT = 99999999; const SITE = (window.C_SETTINGS && window.C_SETTINGS.routes && window.C_SETTINGS.routes.root) || ''; const ADD_TO_CART_ANIMATION_SETTING = `${SITE}/api/marketing_atmosphere_app/add_to_cart_btn_animation/setting`; class SpzCustomPainterButtonAnimation extends SPZ.BaseElement { /**@override */ static deferredMount() { return false; } /** @param {!SpzElement} element */ constructor(element) { super(element); /** @private {!../../src/service/xhr-impl.Xhr} */ this.xhr_ = SPZServices.xhrFor(this.win); /** @private {Object} */ this.data_ = null; /** @private {Element} */ this.addToCartButton_ = null; /** @private {boolean} */ this.productAvailable_ = true; /** @private {number} */ this.timerId_ = null; /** @private {number} */ this.animationExecutionCount_ = 0; /** @private {boolean} */ this.selectedVariantAvailable_ = true; /** @private {number} */ this.delay_ = 5000; /** @private {number} */ this.iterationCount_ = 5; /** @private {string} */ this.animationClass_ = ''; } /** @override */ isLayoutSupported(layout) { return layout == SPZCore.Layout.LOGIC; } /** @override */ buildCallback() { this.productAvailable_ = this.element.hasAttribute('product-available'); this.selectedVariantAvailable_ = this.element.hasAttribute('selected-variant-available'); } /** @override */ mountCallback() { this.render_(); } /** @private */ render_() { if (!this.productAvailable_) { return; } this.fetch_().then((data) => { if (!data) { return; } this.data_ = data; this.animationClass_ = `painter-${data.animation_name}-animation`; this.iterationCount_ = data.animation_iteration_count === 'infinite' ? MAX_ITERATION_COUNT : data.animation_iteration_count; const animationDuration = 1; const animationDelay = data.animation_delay || 5; this.delay_ = (animationDuration + animationDelay) * 1000; this.handleButtonEffect_(); }); } /** * @param {JsonObject} data * @return {(null|Object)} * @private */ parseJson_(data) { try { return JSON.parse(data); } catch (e) { return null; } } /** * @return {Promise} * @private */ fetch_() { return this.xhr_.fetchJson(ADD_TO_CART_ANIMATION_SETTING).then((data) => { if (!data || !data.enabled) { return null; } return this.parseJson_(data.detail); }); } /** @private */ getAddToCartButton_() { this.addToCartButton_ = SPZCore.Dom.scopedQuerySelector( document.body, '[data-section-type="product"] [role="addToCart"], [data-section-type="product_detail"] [role="addToCart"], [data-section-type="product_detail"] [data-click="addToCart"], [data-section-type="product"] [data-click="addToCart"]' ); } /** @private */ restartAnimation_() { this.addToCartButton_.classList.remove(this.animationClass_); this.addToCartButton_./* OK */ offsetWidth; this.addToCartButton_.classList.add(this.animationClass_); this.animationExecutionCount_++; } /** @private */ clearTimer_() { this.win.clearInterval(this.timerId_); this.timerId_ = null; } /** @private */ setupTimer_() { this.timerId_ = this.win.setInterval(() => { this.restartAnimation_(); if (this.animationExecutionCount_ >= this.iterationCount_) { this.removeAnimationClass_(); this.clearTimer_(); } }, this.delay_); } /** @private */ restartTimer_() { if (this.animationExecutionCount_ >= this.iterationCount_) { this.removeAnimationClass_(); return; } this.setupTimer_(); } /** @private */ listenVariantChange_() { SPZUtils.Event.listen(self.document, 'dj.variantChange', (e) => { const selectedVariant = e.detail && e.detail.selected; if (!selectedVariant) { return; } const {available} = selectedVariant; if (this.selectedVariantAvailable_ !== available) { this.selectedVariantAvailable_ = available; this.clearTimer_(); if (available) { this.restartTimer_(); } } }); } /** @private */ removeAnimationClass_() { this.win.setTimeout(() => { this.addToCartButton_.classList.remove(this.animationClass_); }, 1000); } /** @private */ handleButtonEffect_() { this.getAddToCartButton_(); if (!this.addToCartButton_) { return; } if (this.selectedVariantAvailable_) { ++this.animationExecutionCount_; this.addToCartButton_.classList.add(this.animationClass_); if (this.iterationCount_ === 1) { this.removeAnimationClass_(); return; } this.setupTimer_(); } this.listenVariantChange_(); } } SPZ.defineElement(TAG, SpzCustomPainterButtonAnimation);