kontra
Version:
Kontra HTML5 game development library
748 lines (645 loc) • 27.8 kB
HTML
<html lang="en">
<head>
<title>Kontra.js – Pointer</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<base href="https://straker.github.io/kontra/">
<script>
// adjust path based on location (github pages required kontra url)
if (window.location.host.indexOf('localhost') !== -1) {
let base = document.querySelector('base');
base.setAttribute('href', '/');
}
</script>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/prism/1.16.0/themes/prism.min.css">
<link rel="stylesheet" href="assets/styles.css">
<script src="assets/js/kontra.js"></script>
</head>
<body>
<div class="content">
<header class="main-nav">
<div id="kontra-heading" class="nav-heading">Kontra</div>
<a href="#main">Skip navigation</a>
<nav>
<button class="menu-button" aria-expanded="false" aria-controls="menu"><span aria-hidden="true">☰</span> Menu</button>
<!-- add role=list back to list so screen readers still read it as list when
css list-style: none is set
@see https://web-a11y.slack.com/archives/C042TSFGN/p1501699529181172 -->
<ul id="menu" role="list">
<li><a href="." >Introduction</a></li>
<li><a href="getting-started" >Getting Started</a></li>
<li><a href="download" >Download</a></li>
<li><a href="tutorials" >Tutorials</a></li>
<li><a href="made-with-kontra" >Made With Kontra</a></li>
<li>
<span id="api" class="nav-api-heading">API</span>
<ul aria-labelledby="api">
<li><a href="api/animation" >Animation</a></li>
<li><a href="api/assets" >Assets</a></li>
<li><a href="api/core" >Core</a></li>
<li><a href="api/events" >Events</a></li>
<li><a href="api/gameLoop" >GameLoop</a></li>
<li><a href="api/keyboard" >Keyboard</a></li>
<li><a href="api/plugin" >Plugin</a></li>
<li><a href="api/pointer" aria-current="page">Pointer</a></li>
<li><a href="api/pool" >Pool</a></li>
<li><a href="api/quadtree" >Quadtree</a></li>
<li><a href="api/sprite" >Sprite</a></li>
<li><a href="api/spriteSheet" >SpriteSheet</a></li>
<li><a href="api/store" >Store</a></li>
<li><a href="api/tileEngine" >TileEngine</a></li>
<li><a href="api/vector" >Vector</a></li>
</ul>
</li>
</ul>
</nav>
<div class="scroll-indicator" aria-hidden="true"><span>^</span></div>
</header>
<main id="main">
<div>
<a href="https://github.com/straker/kontra" class="github-corner" aria-label="View source on GitHub"><svg width="80" height="80" viewBox="0 0 250 250" style="fill:#151513; color:#fff; position: absolute; top: 0; border: 0; right: 0;" aria-hidden="true"><path d="M0,0 L115,115 L130,115 L142,142 L250,250 L250,0 Z"></path><path d="M128.3,109.0 C113.8,99.7 119.0,89.6 119.0,89.6 C122.0,82.7 120.5,78.6 120.5,78.6 C119.2,72.0 123.4,76.3 123.4,76.3 C127.3,80.9 125.5,87.3 125.5,87.3 C122.9,97.6 130.6,101.9 134.4,103.2" fill="currentColor" style="transform-origin: 130px 106px;" class="octo-arm"></path><path d="M115.0,115.0 C114.9,115.1 118.7,116.5 119.8,115.4 L133.7,101.6 C136.9,99.2 139.9,98.4 142.2,98.6 C133.8,88.0 127.5,74.4 143.8,58.0 C148.5,53.4 154.0,51.2 159.7,51.0 C160.3,49.4 163.2,43.6 171.4,40.1 C171.4,40.1 176.1,42.5 178.8,56.2 C183.1,58.6 187.2,61.8 190.9,65.4 C194.5,69.0 197.7,73.2 200.1,77.6 C213.8,80.2 216.3,84.9 216.3,84.9 C212.7,93.1 206.9,96.0 205.4,96.6 C205.1,102.4 203.0,107.8 198.3,112.5 C181.9,128.9 168.3,122.5 157.7,114.1 C157.9,116.9 156.7,120.9 152.7,124.9 L141.0,136.5 C139.8,137.7 141.6,141.9 141.8,141.8 Z" fill="currentColor" class="octo-body"></path></svg></a>
<h1>Pointer </h1>
<p>A simple pointer API. You can use it move the main sprite or respond to a pointer event. Works with both mouse and touch events.</p>
<p>Pointer events can be added on a global level or on individual sprites or objects. Before an object can receive pointer events, you must tell the pointer which objects to track and the object must haven been rendered to the canvas using <code>object.render()</code>.</p>
<p>After an object is tracked and rendered, you can assign it an <code>onDown()</code>, <code>onUp()</code>, or <code>onOver()</code> functions which will be called whenever a pointer down, up, or over event happens on the object.</p>
<div class="tablist">
<ul role="tablist">
<li role="presentation" data-tab="global">
<button role="tab" id="pointer-global-tab">Global Object</button>
</li>
<li role="presentation" data-tab="es">
<button role="tab" id="pointer-es-tab">ES Module Import</button>
</li>
<li role="presentation" data-tab="bundle">
<button role="tab" id="pointer-bundle-tab">Module Bundler</button>
</li>
<li role="presentation"></li>
</ul>
<section role="tabpanel" aria-labelledby=pointer-global-tab data-tabpanel="global"><pre><code class="language-js">let { initPointer, track, Sprite } = kontra;
// this function must be called first before pointer
// functions will work
initPointer();
let sprite = Sprite({
onDown: function() {
// handle on down events on the sprite
},
onUp: function() {
// handle on up events on the sprite
},
onOver: function() {
// handle on over events on the sprite
}
});
track(sprite);
sprite.render();</code></pre></section>
<section role="tabpanel" aria-labelledby=pointer-es-tab data-tabpanel="es"><pre><code class="language-js">import { initPointer, track, Sprite } from 'path/to/kontra.mjs';
// this function must be called first before pointer
// functions will work
initPointer();
let sprite = Sprite({
onDown: function() {
// handle on down events on the sprite
},
onUp: function() {
// handle on up events on the sprite
},
onOver: function() {
// handle on over events on the sprite
}
});
track(sprite);
sprite.render();</code></pre></section>
<section role="tabpanel" aria-labelledby=pointer-bundle-tab data-tabpanel="bundle"><pre><code class="language-js">import { initPointer, track, Sprite } from 'kontra';
// this function must be called first before pointer
// functions will work
initPointer();
let sprite = Sprite({
onDown: function() {
// handle on down events on the sprite
},
onUp: function() {
// handle on up events on the sprite
},
onOver: function() {
// handle on over events on the sprite
}
});
track(sprite);
sprite.render();</code></pre></section>
</div>
<p>By default, the pointer is treated as a circle and will check for collisions against objects assuming they are rectangular (have a width and height property).</p>
<p>If you need to perform a different type of collision detection, assign the object a <code>collidesWithPointer()</code> function and it will be called instead. The function is passed the pointer object. Use this function to determine how the pointer circle should collide with the object.</p>
<div class="tablist">
<ul role="tablist">
<li role="presentation" data-tab="global">
<button role="tab" id="pointer-global-tab">Global Object</button>
</li>
<li role="presentation" data-tab="es">
<button role="tab" id="pointer-es-tab">ES Module Import</button>
</li>
<li role="presentation" data-tab="bundle">
<button role="tab" id="pointer-bundle-tab">Module Bundler</button>
</li>
<li role="presentation"></li>
</ul>
<section role="tabpanel" aria-labelledby=pointer-global-tab data-tabpanel="global"><pre><code class="language-js">let { Sprite } = kontra;
let sprite = Srite({
x: 10,
y: 10,
radius: 10
collidesWithPointer: function(pointer) {
// perform a circle v circle collision test
let dx = pointer.x - this.x;
let dy = pointer.y - this.y;
return Math.sqrt(dx * dx + dy * dy) < this.radius;
}
});</code></pre></section>
<section role="tabpanel" aria-labelledby=pointer-es-tab data-tabpanel="es"><pre><code class="language-js">import { Sprite } from 'path/to/kontra.mjs';
let sprite = Srite({
x: 10,
y: 10,
radius: 10
collidesWithPointer: function(pointer) {
// perform a circle v circle collision test
let dx = pointer.x - this.x;
let dy = pointer.y - this.y;
return Math.sqrt(dx * dx + dy * dy) < this.radius;
}
});</code></pre></section>
<section role="tabpanel" aria-labelledby=pointer-bundle-tab data-tabpanel="bundle"><pre><code class="language-js">import { Sprite } from 'kontra';
let sprite = Srite({
x: 10,
y: 10,
radius: 10
collidesWithPointer: function(pointer) {
// perform a circle v circle collision test
let dx = pointer.x - this.x;
let dy = pointer.y - this.y;
return Math.sqrt(dx * dx + dy * dy) < this.radius;
}
});</code></pre></section>
</div>
<section class="toc">
<h2 id="toc"><a href="#toc" class="section-link">Table of Contents<span aria-hidden="true">#</span></a></h2>
<ul aria-labelledby="toc">
<li>
<ul>
<li><a href="api/pointer#available-buttons">Available Buttons</a></li>
</ul>
</li>
<li>
<h3 id="properties">Properties</h3>
<ul aria-labelledby="properties">
<li>
<a href="api/pointer#pointer">
<span>pointer</span>
</a>
</li>
</ul>
</li>
<li>
<h3 id="methods">Methods</h3>
<ul aria-labelledby="methods">
<li>
<a href="api/pointer#initPointer">
<span>initPointer(​)</span>
</a>
</li>
<li>
<a href="api/pointer#onPointerDown">
<span>onPointerDown(​callback)</span>
</a>
</li>
<li>
<a href="api/pointer#onPointerUp">
<span>onPointerUp(​callback)</span>
</a>
</li>
<li>
<a href="api/pointer#pointerOver">
<span>pointerOver(​object)</span>
</a>
</li>
<li>
<a href="api/pointer#pointerPressed">
<span>pointerPressed(​button)</span>
</a>
</li>
<li>
<a href="api/pointer#track">
<span>track(​objects)</span>
</a>
</li>
<li>
<a href="api/pointer#untrack">
<span>untrack(​objects)</span>
</a>
</li>
</ul>
</li>
</ul>
</section>
<section>
<h2 id="available-buttons">
<a href="#available-buttons" class="section-link">
<span>Available Buttons</span>
<span aria-hidden="true">#</span>
</a>
</h2>
<p>Below is a list of buttons that you can use.</p>
<ul>
<li>left, middle, right</li>
</ul>
</section>
<section>
<h2 id="initPointer">
<a href="api/pointer#initPointer" class="section-link">
<span>initPointer(​)</span>
<span aria-hidden="true">#</span>
</a>
</h2>
<p>Initialize pointer event listeners. This function must be called before using other pointer functions.</p>
</section>
<section>
<h2 id="onPointerDown">
<a href="api/pointer#onPointerDown" class="section-link">
<span>onPointerDown(​callback)</span>
<span aria-hidden="true">#</span>
</a>
</h2>
<p>Register a function to be called on all pointer down events. Is passed the original Event and the target object (if there is one).</p>
<div class="tablist">
<ul role="tablist">
<li role="presentation" data-tab="global">
<button role="tab" id="onpointerdown-global-tab">Global Object</button>
</li>
<li role="presentation" data-tab="es">
<button role="tab" id="onpointerdown-es-tab">ES Module Import</button>
</li>
<li role="presentation" data-tab="bundle">
<button role="tab" id="onpointerdown-bundle-tab">Module Bundler</button>
</li>
<li role="presentation"></li>
</ul>
<section role="tabpanel" aria-labelledby=onpointerdown-global-tab data-tabpanel="global"><pre><code class="language-js">let { initPointer, onPointerDown } = kontra;
initPointer();
onPointerDown(function(e, object) {
// handle pointer down
})</code></pre></section>
<section role="tabpanel" aria-labelledby=onpointerdown-es-tab data-tabpanel="es"><pre><code class="language-js">import { initPointer, onPointerDown } from 'path/to/kontra.mjs';
initPointer();
onPointerDown(function(e, object) {
// handle pointer down
})</code></pre></section>
<section role="tabpanel" aria-labelledby=onpointerdown-bundle-tab data-tabpanel="bundle"><pre><code class="language-js">import { initPointer, onPointerDown } from 'kontra';
initPointer();
onPointerDown(function(e, object) {
// handle pointer down
})</code></pre></section>
</div>
<h3 id="title-onPointerDown"><span class="visually-hidden">onPointerDown</span> Parameters</span></h3>
<dl aria-labelledby="title-onPointerDown">
<dt>
<code>callback</code>
</dt>
<dd><p>Function. Function to call on pointer down.</p>
</dd>
</dl>
</section>
<section>
<h2 id="onPointerUp">
<a href="api/pointer#onPointerUp" class="section-link">
<span>onPointerUp(​callback)</span>
<span aria-hidden="true">#</span>
</a>
</h2>
<p>Register a function to be called on all pointer up events. Is passed the original Event and the target object (if there is one).</p>
<div class="tablist">
<ul role="tablist">
<li role="presentation" data-tab="global">
<button role="tab" id="onpointerup-global-tab">Global Object</button>
</li>
<li role="presentation" data-tab="es">
<button role="tab" id="onpointerup-es-tab">ES Module Import</button>
</li>
<li role="presentation" data-tab="bundle">
<button role="tab" id="onpointerup-bundle-tab">Module Bundler</button>
</li>
<li role="presentation"></li>
</ul>
<section role="tabpanel" aria-labelledby=onpointerup-global-tab data-tabpanel="global"><pre><code class="language-js">let { initPointer, onPointerUp } = kontra;
initPointer();
onPointerUp(function(e, object) {
// handle pointer up
})</code></pre></section>
<section role="tabpanel" aria-labelledby=onpointerup-es-tab data-tabpanel="es"><pre><code class="language-js">import { initPointer, onPointerUp } from 'path/to/kontra.mjs';
initPointer();
onPointerUp(function(e, object) {
// handle pointer up
})</code></pre></section>
<section role="tabpanel" aria-labelledby=onpointerup-bundle-tab data-tabpanel="bundle"><pre><code class="language-js">import { initPointer, onPointerUp } from 'kontra';
initPointer();
onPointerUp(function(e, object) {
// handle pointer up
})</code></pre></section>
</div>
<h3 id="title-onPointerUp"><span class="visually-hidden">onPointerUp</span> Parameters</span></h3>
<dl aria-labelledby="title-onPointerUp">
<dt>
<code>callback</code>
</dt>
<dd><p>Function. Function to call on pointer up.</p>
</dd>
</dl>
</section>
<section>
<h2 id="pointer">
<a href="api/pointer#pointer" class="section-link">
<span>pointer</span>
<span aria-hidden="true">#</span>
</a>
</h2>
<p>Object containing the <code>radius</code> and current <code>x</code> and <code>y</code> position of the pointer relative to the top-left corner of the canvas.</p>
<div class="tablist">
<ul role="tablist">
<li role="presentation" data-tab="global">
<button role="tab" id="pointer-global-tab">Global Object</button>
</li>
<li role="presentation" data-tab="es">
<button role="tab" id="pointer-es-tab">ES Module Import</button>
</li>
<li role="presentation" data-tab="bundle">
<button role="tab" id="pointer-bundle-tab">Module Bundler</button>
</li>
<li role="presentation"></li>
</ul>
<section role="tabpanel" aria-labelledby=pointer-global-tab data-tabpanel="global"><pre><code class="language-js">let { initPointer, pointer } = kontra;
initPointer();
console.log(pointer); //=> { x: 100, y: 200, radius: 5 };</code></pre></section>
<section role="tabpanel" aria-labelledby=pointer-es-tab data-tabpanel="es"><pre><code class="language-js">import { initPointer, pointer } from 'path/to/kontra.mjs';
initPointer();
console.log(pointer); //=> { x: 100, y: 200, radius: 5 };</code></pre></section>
<section role="tabpanel" aria-labelledby=pointer-bundle-tab data-tabpanel="bundle"><pre><code class="language-js">import { initPointer, pointer } from 'kontra';
initPointer();
console.log(pointer); //=> { x: 100, y: 200, radius: 5 };</code></pre></section>
</div>
</section>
<section>
<h2 id="pointerOver">
<a href="api/pointer#pointerOver" class="section-link">
<span>pointerOver(​object)</span>
<span aria-hidden="true">#</span>
</a>
</h2>
<p>Check to see if the pointer is currently over the object. Since multiple objects may be rendered on top of one another, only the top most object under the pointer will return true.</p>
<div class="tablist">
<ul role="tablist">
<li role="presentation" data-tab="global">
<button role="tab" id="pointerover-global-tab">Global Object</button>
</li>
<li role="presentation" data-tab="es">
<button role="tab" id="pointerover-es-tab">ES Module Import</button>
</li>
<li role="presentation" data-tab="bundle">
<button role="tab" id="pointerover-bundle-tab">Module Bundler</button>
</li>
<li role="presentation"></li>
</ul>
<section role="tabpanel" aria-labelledby=pointerover-global-tab data-tabpanel="global"><pre><code class="language-js">let { initPointer, track, pointer, pointerOver, Sprite } = kontra;
initPointer();
let sprite1 = Sprite({
x: 10,
y: 10,
width: 10,
height: 10
});
let sprite2 = Sprite({
x: 15,
y: 10,
width: 10,
height: 10
});
track([sprite1, sprite2]);
sprite1.render();
sprite2.render();
pointer.x = 14;
pointer.y = 15;
console.log(pointerOver(sprite1)); //=> false
console.log(pointerOver(sprite2)); //=> true</code></pre></section>
<section role="tabpanel" aria-labelledby=pointerover-es-tab data-tabpanel="es"><pre><code class="language-js">import { initPointer, track, pointer, pointerOver, Sprite } from 'path/to/kontra.mjs';
initPointer();
let sprite1 = Sprite({
x: 10,
y: 10,
width: 10,
height: 10
});
let sprite2 = Sprite({
x: 15,
y: 10,
width: 10,
height: 10
});
track([sprite1, sprite2]);
sprite1.render();
sprite2.render();
pointer.x = 14;
pointer.y = 15;
console.log(pointerOver(sprite1)); //=> false
console.log(pointerOver(sprite2)); //=> true</code></pre></section>
<section role="tabpanel" aria-labelledby=pointerover-bundle-tab data-tabpanel="bundle"><pre><code class="language-js">import { initPointer, track, pointer, pointerOver, Sprite } from 'kontra';
initPointer();
let sprite1 = Sprite({
x: 10,
y: 10,
width: 10,
height: 10
});
let sprite2 = Sprite({
x: 15,
y: 10,
width: 10,
height: 10
});
track([sprite1, sprite2]);
sprite1.render();
sprite2.render();
pointer.x = 14;
pointer.y = 15;
console.log(pointerOver(sprite1)); //=> false
console.log(pointerOver(sprite2)); //=> true</code></pre></section>
</div>
<h3 id="title-pointerOver"><span class="visually-hidden">pointerOver</span> Parameters</span></h3>
<dl aria-labelledby="title-pointerOver">
<dt>
<code>object</code>
</dt>
<dd><p>Object. The object to check if the pointer is over.</p>
</dd>
</dl>
<h3><span class="visually-hidden">pointerOver</span> Return value</h3>
<p><p><code>true</code> if the pointer is currently over the object, <code>false</code> otherwise.</p>
</p>
</section>
<section>
<h2 id="pointerPressed">
<a href="api/pointer#pointerPressed" class="section-link">
<span>pointerPressed(​button)</span>
<span aria-hidden="true">#</span>
</a>
</h2>
<p>Check if a button is currently pressed. Use during an <code>update()</code> function to perform actions each frame.</p>
<div class="tablist">
<ul role="tablist">
<li role="presentation" data-tab="global">
<button role="tab" id="pointerpressed-global-tab">Global Object</button>
</li>
<li role="presentation" data-tab="es">
<button role="tab" id="pointerpressed-es-tab">ES Module Import</button>
</li>
<li role="presentation" data-tab="bundle">
<button role="tab" id="pointerpressed-bundle-tab">Module Bundler</button>
</li>
<li role="presentation"></li>
</ul>
<section role="tabpanel" aria-labelledby=pointerpressed-global-tab data-tabpanel="global"><pre><code class="language-js">let { initPointer, pointerPressed } = kontra;
initPointer();
Sprite({
update: function() {
if (pointerPressed('left')){
// left mouse button pressed
}
else if (pointerPressed('right')) {
// right mouse button pressed
}
}
});</code></pre></section>
<section role="tabpanel" aria-labelledby=pointerpressed-es-tab data-tabpanel="es"><pre><code class="language-js">import { initPointer, pointerPressed } from 'path/to/kontra.mjs';
initPointer();
Sprite({
update: function() {
if (pointerPressed('left')){
// left mouse button pressed
}
else if (pointerPressed('right')) {
// right mouse button pressed
}
}
});</code></pre></section>
<section role="tabpanel" aria-labelledby=pointerpressed-bundle-tab data-tabpanel="bundle"><pre><code class="language-js">import { initPointer, pointerPressed } from 'kontra';
initPointer();
Sprite({
update: function() {
if (pointerPressed('left')){
// left mouse button pressed
}
else if (pointerPressed('right')) {
// right mouse button pressed
}
}
});</code></pre></section>
</div>
<h3 id="title-pointerPressed"><span class="visually-hidden">pointerPressed</span> Parameters</span></h3>
<dl aria-labelledby="title-pointerPressed">
<dt>
<code>button</code>
</dt>
<dd><p>String. Button to check for pressed state.</p>
</dd>
</dl>
<h3><span class="visually-hidden">pointerPressed</span> Return value</h3>
<p><p><code>true</code> if the button is pressed, <code>false</code> otherwise.</p>
</p>
</section>
<section>
<h2 id="track">
<a href="api/pointer#track" class="section-link">
<span>track(​objects)</span>
<span aria-hidden="true">#</span>
</a>
</h2>
<p>Begin tracking pointer events for a set of objects. Takes a single object or an array of objects.</p>
<div class="tablist">
<ul role="tablist">
<li role="presentation" data-tab="global">
<button role="tab" id="track-global-tab">Global Object</button>
</li>
<li role="presentation" data-tab="es">
<button role="tab" id="track-es-tab">ES Module Import</button>
</li>
<li role="presentation" data-tab="bundle">
<button role="tab" id="track-bundle-tab">Module Bundler</button>
</li>
<li role="presentation"></li>
</ul>
<section role="tabpanel" aria-labelledby=track-global-tab data-tabpanel="global"><pre><code class="language-js">let { initPointer, track } = kontra;
initPointer();
track(obj);
track([obj1, obj2]);</code></pre></section>
<section role="tabpanel" aria-labelledby=track-es-tab data-tabpanel="es"><pre><code class="language-js">import { initPointer, track } from 'path/to/kontra.mjs';
initPointer();
track(obj);
track([obj1, obj2]);</code></pre></section>
<section role="tabpanel" aria-labelledby=track-bundle-tab data-tabpanel="bundle"><pre><code class="language-js">import { initPointer, track } from 'kontra';
initPointer();
track(obj);
track([obj1, obj2]);</code></pre></section>
</div>
<h3 id="title-track"><span class="visually-hidden">track</span> Parameters</span></h3>
<dl aria-labelledby="title-track">
<dt>
<code>objects</code>
</dt>
<dd><p>Object or an Array of Objects. Objects to track.</p>
</dd>
</dl>
</section>
<section>
<h2 id="untrack">
<a href="api/pointer#untrack" class="section-link">
<span>untrack(​objects)</span>
<span aria-hidden="true">#</span>
</a>
</h2>
<p>Remove the callback function for a bound set of objects.</p>
<div class="tablist">
<ul role="tablist">
<li role="presentation" data-tab="global">
<button role="tab" id="untrack-global-tab">Global Object</button>
</li>
<li role="presentation" data-tab="es">
<button role="tab" id="untrack-es-tab">ES Module Import</button>
</li>
<li role="presentation" data-tab="bundle">
<button role="tab" id="untrack-bundle-tab">Module Bundler</button>
</li>
<li role="presentation"></li>
</ul>
<section role="tabpanel" aria-labelledby=untrack-global-tab data-tabpanel="global"><pre><code class="language-js">let { untrack } = kontra;
untrack(obj);
untrack([obj1, obj2]);</code></pre></section>
<section role="tabpanel" aria-labelledby=untrack-es-tab data-tabpanel="es"><pre><code class="language-js">import { untrack } from 'path/to/kontra.mjs';
untrack(obj);
untrack([obj1, obj2]);</code></pre></section>
<section role="tabpanel" aria-labelledby=untrack-bundle-tab data-tabpanel="bundle"><pre><code class="language-js">import { untrack } from 'kontra';
untrack(obj);
untrack([obj1, obj2]);</code></pre></section>
</div>
<h3 id="title-untrack"><span class="visually-hidden">untrack</span> Parameters</span></h3>
<dl aria-labelledby="title-untrack">
<dt>
<code>objects</code>
</dt>
<dd><p>Object or an Array of Objects. Object or objects to stop tracking.</p>
</dd>
</dl>
</section>
</div>
</main>
</div>
<script src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.16.0/prism.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.16.0/components/prism-javascript.min.js"></script>
<script src="assets/js/navbar.js"></script>
<script src="assets/js/exampleTabList.js"></script>
</body>
</html>