UNPKG

19.1 kBHTMLView Raw
1<!DOCTYPE html>
2
3<html lang="en">
4<head>
5 <meta charset="utf-8">
6 <meta name="viewport" content="width=device-width">
7 <title>CrossBrowdy API documentation Source: CrossBase/general/CB_others.js</title>
8
9 <!--[if lt IE 9]>
10 <script src="//html5shiv.googlecode.com/svn/trunk/html5.js"></script>
11 <![endif]-->
12 <link type="text/css" rel="stylesheet" href="styles/sunlight.default.css">
13
14 <link type="text/css" rel="stylesheet" href="styles/site.cosmo.css">
15
16</head>
17
18<body style="min-width:800px; overflow-wrap:break-word; word-wrap:break-word; word-break:break-word; line-break:strict; hyphens:none; -webkit-hyphens:none; -moz-hyphens:none;">
19
20<div class="navbar navbar-default navbar-fixed-top ">
21<div class="container">
22 <div class="navbar-header">
23 <a class="navbar-brand" href="index.html">CrossBrowdy API documentation</a>
24 <button class="navbar-toggle" type="button" data-toggle="collapse" data-target="#topNavigation">
25 <span class="icon-bar"></span>
26 <span class="icon-bar"></span>
27 <span class="icon-bar"></span>
28 </button>
29 </div>
30 <div class="navbar-collapse collapse" id="topNavigation">
31 <ul class="nav navbar-nav">
32
33 <li class="dropdown">
34 <a href="namespaces.list.html" class="dropdown-toggle" data-toggle="dropdown">Namespaces<b class="caret"></b></a>
35 <ul class="dropdown-menu inline">
36 <li><a href="CB_Arrays.html">CB_Arrays</a></li><li><a href="CB_AudioDetector.html">CB_AudioDetector</a></li><li><a href="CB_baseSymbols.html">CB_baseSymbols</a></li><li><a href="CB_Client.html">CB_Client</a></li><li><a href="CB_Collisions.html">CB_Collisions</a></li><li><a href="CB_Configuration.html">CB_Configuration</a></li><li><a href="CB_Configuration.CrossBase.html">CB_Configuration.CrossBase</a></li><li><a href="CB_Configuration.CrossBrowdy.html">CB_Configuration.CrossBrowdy</a></li><li><a href="CB_Controllers.html">CB_Controllers</a></li><li><a href="CB_Controllers_Proprietary.html">CB_Controllers_Proprietary</a></li><li><a href="CB_Controllers_Proprietary.WII.html">CB_Controllers_Proprietary.WII</a></li><li><a href="CB_Controllers_Proprietary.WII_U.html">CB_Controllers_Proprietary.WII_U</a></li><li><a href="CB_Device.html">CB_Device</a></li><li><a href="CB_Device.AmbientLight.html">CB_Device.AmbientLight</a></li><li><a href="CB_Device.Battery.html">CB_Device.Battery</a></li><li><a href="CB_Device.Location.html">CB_Device.Location</a></li><li><a href="CB_Device.Motion.html">CB_Device.Motion</a></li><li><a href="CB_Device.Orientation.html">CB_Device.Orientation</a></li><li><a href="CB_Device.Proximity.html">CB_Device.Proximity</a></li><li><a href="CB_Device.Vibration.html">CB_Device.Vibration</a></li><li><a href="CB_Elements.html">CB_Elements</a></li><li><a href="CB_Events.html">CB_Events</a></li><li><a href="CB_Keyboard.html">CB_Keyboard</a></li><li><a href="CB_Keyboard.chars.html">CB_Keyboard.chars</a></li><li><a href="CB_Keyboard.extended.html">CB_Keyboard.extended</a></li><li><a href="CB_Keyboard.keys.html">CB_Keyboard.keys</a></li><li><a href="CB_Modules.html">CB_Modules</a></li><li><a href="CB_Mouse.html">CB_Mouse</a></li><li><a href="CB_Mouse.CursorImage.html">CB_Mouse.CursorImage</a></li><li><a href="CB_Net.html">CB_Net</a></li><li><a href="CB_Net.Fetch.html">CB_Net.Fetch</a></li><li><a href="CB_Net.REST.html">CB_Net.REST</a></li><li><a href="CB_Net.Sockets.html">CB_Net.Sockets</a></li><li><a href="CB_Net.Sockets.SockJS.html">CB_Net.Sockets.SockJS</a></li><li><a href="CB_Net.XHR.html">CB_Net.XHR</a></li><li><a href="CB_Pointer.html">CB_Pointer</a></li><li><a href="CB_Screen.html">CB_Screen</a></li><li><a href="CB_Speaker.html">CB_Speaker</a></li><li><a href="CB_Touch.html">CB_Touch</a></li>
37 </ul>
38 </li>
39
40 <li class="dropdown">
41 <a href="classes.list.html" class="dropdown-toggle" data-toggle="dropdown">Classes<b class="caret"></b></a>
42 <ul class="dropdown-menu inline">
43 <li><a href="CB_AudioFile.html">CB_AudioFile</a></li><li><a href="CB_AudioFile_API.AAPI.html">CB_AudioFile_API.AAPI</a></li><li><a href="CB_AudioFile_API.ACMP.html">CB_AudioFile_API.ACMP</a></li><li><a href="CB_AudioFile_API.SM2.html">CB_AudioFile_API.SM2</a></li><li><a href="CB_AudioFile_API.WAAPI.html">CB_AudioFile_API.WAAPI</a></li><li><a href="CB_AudioFileCache.html">CB_AudioFileCache</a></li><li><a href="CB_AudioFileSprites.html">CB_AudioFileSprites</a></li><li><a href="CB_AudioFileSpritesPool.html">CB_AudioFileSpritesPool</a></li><li><a href="CB_Canvas.html">CB_Canvas</a></li><li><a href="CB_GraphicSprites.html">CB_GraphicSprites</a></li><li><a href="CB_GraphicSpritesScene.html">CB_GraphicSpritesScene</a></li>
44 </ul>
45 </li>
46
47 <li class="dropdown">
48 <a href="global.html" class="dropdown-toggle" data-toggle="dropdown">Global<b class="caret"></b></a>
49 <ul class="dropdown-menu inline">
50 <li><a href="global.html#CB_addCredits">CB_addCredits</a></li><li><a href="global.html#CB_BASE_NAME">CB_BASE_NAME</a></li><li><a href="global.html#CB_baseToBase">CB_baseToBase</a></li><li><a href="global.html#CB_baseToInt">CB_baseToInt</a></li><li><a href="global.html#CB_br2nl">CB_br2nl</a></li><li><a href="global.html#CB_brToNl">CB_brToNl</a></li><li><a href="global.html#CB_combineArraysOrObjects">CB_combineArraysOrObjects</a></li><li><a href="global.html#CB_combineAutomatically">CB_combineAutomatically</a></li><li><a href="global.html#CB_combineJSON">CB_combineJSON</a></li><li><a href="global.html#CB_combineURIParameters">CB_combineURIParameters</a></li><li><a href="global.html#CB_combineURLParameters">CB_combineURLParameters</a></li><li><a href="global.html#CB_console">CB_console</a></li><li><a href="global.html#CB_copyObject">CB_copyObject</a></li><li><a href="global.html#CB_countDecimalDigits">CB_countDecimalDigits</a></li><li><a href="global.html#CB_countDecimalPart">CB_countDecimalPart</a></li><li><a href="global.html#CB_countDecimals">CB_countDecimals</a></li><li><a href="global.html#CB_countIntegerDigits">CB_countIntegerDigits</a></li><li><a href="global.html#CB_countIntegerPart">CB_countIntegerPart</a></li><li><a href="global.html#CB_credits">CB_credits</a></li><li><a href="global.html#CB_CREDITS_DEFAULT">CB_CREDITS_DEFAULT</a></li><li><a href="global.html#CB_forceString">CB_forceString</a></li><li><a href="global.html#CB_forEach">CB_forEach</a></li><li><a href="global.html#CB_getBase64StringObject">CB_getBase64StringObject</a></li><li><a href="global.html#CB_getCookie">CB_getCookie</a></li><li><a href="global.html#CB_getDatum">CB_getDatum</a></li><li><a href="global.html#CB_getJSONPropertyValue">CB_getJSONPropertyValue</a></li><li><a href="global.html#CB_getLZStringObject">CB_getLZStringObject</a></li><li><a href="global.html#CB_getValueIndex">CB_getValueIndex</a></li><li><a href="global.html#CB_getValuePath">CB_getValuePath</a></li><li><a href="global.html#CB_includeJSFile">CB_includeJSFile</a></li><li><a href="global.html#CB_indexOf">CB_indexOf</a></li><li><a href="global.html#CB_init">CB_init</a></li><li><a href="global.html#CB_intToBase">CB_intToBase</a></li><li><a href="global.html#CB_isArray">CB_isArray</a></li><li><a href="global.html#CB_isEmail">CB_isEmail</a></li><li><a href="global.html#CB_isFileLocal">CB_isFileLocal</a></li><li><a href="global.html#CB_isString">CB_isString</a></li><li><a href="global.html#CB_lastIndexOf">CB_lastIndexOf</a></li><li><a href="global.html#CB_ltrim">CB_ltrim</a></li><li><a href="global.html#CB_NAME">CB_NAME</a></li><li><a href="global.html#CB_nl2br">CB_nl2br</a></li><li><a href="global.html#CB_nlToBr">CB_nlToBr</a></li><li><a href="global.html#CB_numberFormat">CB_numberFormat</a></li><li><a href="global.html#CB_numberOfDecimalDigits">CB_numberOfDecimalDigits</a></li><li><a href="global.html#CB_numberOfDecimals">CB_numberOfDecimals</a></li><li><a href="global.html#CB_numberOfIntegerDigits">CB_numberOfIntegerDigits</a></li><li><a href="global.html#CB_OPTIONS">CB_OPTIONS</a></li><li><a href="global.html#CB_parseJSON">CB_parseJSON</a></li><li><a href="global.html#CB_parseString">CB_parseString</a></li><li><a href="global.html#CB_regularExpressionString">CB_regularExpressionString</a></li><li><a href="global.html#CB_renderString">CB_renderString</a></li><li><a href="global.html#CB_replaceAll">CB_replaceAll</a></li><li><a href="global.html#CB_rtrim">CB_rtrim</a></li><li><a href="global.html#CB_scriptPath">CB_scriptPath</a></li><li><a href="global.html#CB_scriptPathCalculate">CB_scriptPathCalculate</a></li><li><a href="global.html#CB_setCookie">CB_setCookie</a></li><li><a href="global.html#CB_setDatum">CB_setDatum</a></li><li><a href="global.html#CB_sizeof">CB_sizeof</a></li><li><a href="global.html#CB_sizeOf">CB_sizeOf</a></li><li><a href="global.html#CB_stringifyJSON">CB_stringifyJSON</a></li><li><a href="global.html#CB_symmetricCall">CB_symmetricCall</a></li><li><a href="global.html#CB_symmetricCallClear">CB_symmetricCallClear</a></li><li><a href="global.html#CB_this">CB_this</a></li><li><a href="global.html#CB_trim">CB_trim</a></li><li><a href="global.html#CB_VERSION">CB_VERSION</a></li>
51 </ul>
52 </li>
53
54 </ul>
55
56 <div class="col-sm-3 col-md-3">
57 <form class="navbar-form" role="search">
58 <div class="input-group">
59 <input type="text" class="form-control" placeholder="Search" name="q" id="search-input">
60 <div class="input-group-btn">
61 <button class="btn btn-default" id="search-submit"><i class="glyphicon glyphicon-search"></i></button>
62 </div>
63 </div>
64 </form>
65 </div>
66
67 </div>
68
69</div>
70</div>
71
72
73<div class="container" id="toc-content" style="width:100%;">
74<div class="row" style="width:100%;">
75
76
77 <div class="col-md-12">
78
79 <div id="main">
80
81
82 <h1 class="page-title">Source: CrossBase/general/CB_others.js</h1>
83
84<section>
85 <article>
86 <pre
87 class="sunlight-highlight-javascript linenums">/**
88 * @file Miscellaneous code.
89 * @author Joan Alba Maldonado &lt;workindalian@gmail.com>
90 * @license Creative Commons Attribution 4.0 International. See more at {@link https://crossbrowdy.com/about#what_is_the_crossbrowdy_copyright_and_license}.
91 * @todo Think about a 'CB_symmetricInterval' function, similar to {@link CB_symmetricCall} but calling the callback function automatically.
92 */
93
94
95/**
96 * Callback that is called by {@link CB_symmetricCall}.
97 * @callback CB_symmetricCall_CALLBACK
98 * @param {integer} expectedCallingTime - The timestamp in milliseconds that represents when the callback should have been called (it will be more or less accurate depending on many factors as the platform used, code performance, etc.).
99 */
100
101var CB_symmetricCallLastTimes = {}; //Array that stores the last times of every function.
102/**
103 * Calls the given function once through the native [setTimeout]{@link https://developer.mozilla.org/docs/Web/API/WindowOrWorkerGlobalScope/setTimeout} function internally but having in mind the time taken when the function was called previously so it can be called multiple times and respect a symmetric interval between each call (simulates [requestAnimationFrame]{@link https://developer.mozilla.org/en-US/docs/Web/API/window/requestAnimationFrame}).
104 * @function
105 * @param {CB_symmetricCall_CALLBACK} callbackFunction - Function that will be called every time, receiving as the unique parameter the time (timestamp in milliseconds returned by the [performance.now]{@link https://developer.mozilla.org/en-US/docs/Web/API/Performance/now} method, which could have been polyfilled automatically by CrossBrowdy) when it is called, being "this" the same "this" of the scope where it was called.
106 * @param {integer} timeMs - Milliseconds between one call to the function and the next one. The accuracy will depend on many factors as the platform used, code performance, etc.
107 * @param {string} [id=callbackFunction.toString()] - String that will identify this symmetric interval. Recommended to avoid possible problems.
108 * @returns {number|null} Returns a numeric identifier generated by an internal call to the native [setTimeout]{@link https://developer.mozilla.org/docs/Web/API/WindowOrWorkerGlobalScope/setTimeout} function (can be cleared/cancelled with [clearTimeout]{@link https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope/clearTimeout}). Returns null if the given "callbackFunction" is not a valid function.
109 */
110//* Source: Based on requestAnimationFrame polyfill by Erik Möller.
111function CB_symmetricCall(callbackFunction, timeMs, id)
112{
113 if (typeof(callbackFunction) !== "function") { return null; }
114
115 var now = window.performance.now(); //Can be polyfilled (https://gist.github.com/jalbam/cc805ac3cfe14004ecdf323159ecf40e)
116
117 id = id || callbackFunction;
118
119 if (typeof(CB_symmetricCallLastTimes[id]) === "undefined" || CB_symmetricCallLastTimes[id] === null)
120 {
121 var nextTime = now + timeMs; //First time, it lasts the given milliseconds.
122 CB_symmetricCallLastTimes[id] = 0;
123 }
124 else
125 {
126 //var lastTime = CB_symmetricCallLastTimes[id];
127
128 /*
129 var timeToCall = Math.max(lastTime + timeMs, now);//Math.max(0, timeMs - (now - lastTime));
130 var id = setTimeout(callbackFunction, timeToCall - now);//, timeToCall);
131 lastTime = timeToCall;//now + timeToCall;
132 */
133
134 //var timeToCall = Math.max(0, timeMs - (now - lastTime));
135 //var timeToCall = Math.max(0, timeMs - (now - CB_symmetricCallLastTimes[id]));
136 var nextTime = Math.max(CB_symmetricCallLastTimes[id] + timeMs, now);
137 }
138
139 var that = this;
140 return setTimeout
141 (
142 function()
143 {
144 //callbackFunction.call(that, CB_symmetricCallLastTimes[id] = now + timeToCall);
145 callbackFunction.call(that, CB_symmetricCallLastTimes[id] = nextTime);
146 },
147 //timeToCall
148 nextTime - now
149 );
150}
151
152
153/**
154 * Clears the stored last time used by {@link CB_symmetricCall} for a given symmetric interval identifier.
155 * @function
156 * @param {string} id - String that identifies this symmetric interval.
157 * @returns {boolean|null} Returns null if the given "id" is not a valid string. Returns false if the stored time did not exist for the given "id" or it was cleared already. Returns true otherwise, after clearing it.
158 */
159function CB_symmetricCallClear(id)
160{
161 id = id + "";
162 if (id === "") { return null; }
163 if (typeof(CB_symmetricCallLastTimes[id]) === "undefined" || CB_symmetricCallLastTimes[id] === null) { return false; }
164 CB_symmetricCallLastTimes[id] = null;
165 return true;
166}</pre>
167 </article>
168</section>
169
170
171
172
173
174 </div>
175 </div>
176
177 <div class="clearfix"></div>
178
179
180
181</div>
182</div>
183
184
185 <div class="modal fade" id="searchResults">
186 <div class="modal-dialog">
187 <div class="modal-content">
188 <div class="modal-header">
189 <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
190 <h4 class="modal-title">Search results</h4>
191 </div>
192 <div class="modal-body"></div>
193 <div class="modal-footer">
194 <button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
195 </div>
196 </div><!-- /.modal-content -->
197 </div><!-- /.modal-dialog -->
198 </div>
199
200
201<footer>
202
203
204 <span class="copyright">
205 <a href="printable/" target="_blank">See a more printer-friendly version</a><hr /><span style="color:#000000">© <address style="display:inline; font-style:normal;"><a href="https://crossbrowdy.com/" target="_blank">CrossBrowdy</a> API documentation</address> by <a href="https://joanalbamaldonado.com/" target="_blank">Joan Alba Maldonado</a> - <a href="https://creativecommons.org/licenses/by/4.0/" target="_blank">Creative Commons Attribution 4.0 International</a><br />DocStrap Copyright © 2012-2015 The contributors to the JSDoc3 and DocStrap projects.</span>
206 </span>
207
208<span class="jsdoc-message">
209 Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 3.5.5</a>
210
211 on Mon Feb 3rd 2020
212
213 using the <a href="https://github.com/docstrap/docstrap">DocStrap template</a>.
214</span>
215</footer>
216
217<script src="scripts/docstrap.lib.js"></script>
218<script src="scripts/toc.js"></script>
219
220 <script type="text/javascript" src="scripts/fulltext-search-ui.js"></script>
221
222
223<script>
224$( function () {
225 $( "[id*='$']" ).each( function () {
226 var $this = $( this );
227
228 $this.attr( "id", $this.attr( "id" ).replace( "$", "__" ) );
229 } );
230
231 $( ".tutorial-section pre, .readme-section pre, pre.prettyprint.source" ).each( function () {
232 var $this = $( this );
233
234 var example = $this.find( "code" );
235 exampleText = example.html();
236 var lang = /{@lang (.*?)}/.exec( exampleText );
237 if ( lang && lang[1] ) {
238 exampleText = exampleText.replace( lang[0], "" );
239 example.html( exampleText );
240 lang = lang[1];
241 } else {
242 var langClassMatch = example.parent()[0].className.match(/lang\-(\S+)/);
243 lang = langClassMatch ? langClassMatch[1] : "javascript";
244 }
245
246 if ( lang ) {
247
248 $this
249 .addClass( "sunlight-highlight-" + lang )
250 .addClass( "linenums" )
251 .html( example.html() );
252
253 }
254 } );
255
256 Sunlight.highlightAll( {
257 lineNumbers : true,
258 showMenu : true,
259 enableDoclinks : true
260 } );
261
262 $.catchAnchorLinks( {
263 navbarOffset: 10
264 } );
265 $( "#toc" ).toc( {
266 anchorName : function ( i, heading, prefix ) {
267 return $( heading ).attr( "id" ) || ( prefix + i );
268 },
269 selectors : "#toc-content h1,#toc-content h2,#toc-content h3,#toc-content h4",
270 showAndHide : false,
271 smoothScrolling: true
272 } );
273
274 $( "#main span[id^='toc']" ).addClass( "toc-shim" );
275 $( '.dropdown-toggle' ).dropdown();
276
277 $( "table" ).each( function () {
278 var $this = $( this );
279 $this.addClass('table');
280 } );
281
282} );
283</script>
284
285
286
287<!--Navigation and Symbol Display-->
288
289<script>
290 $( function () {
291 $( '#main' ).localScroll( {
292 offset : { top : 60 } //offset by the height of your header (give or take a few px, see what works for you)
293 } );
294 $( "dt.name" ).each( function () {
295 var $this = $( this ).find("h4");
296 var icon = $( "<i/>" ).addClass( "icon-plus-sign" ).addClass( "pull-right" ).addClass( "icon-white" );
297 var dt = $(this);
298 var children = dt.next( "dd" );
299
300 dt.prepend( icon ).css( {cursor : "pointer"} );
301 dt.addClass( "member-collapsed" ).addClass( "member" );
302
303
304 children.hide();
305
306 dt.children().on( "click", function () {
307 children = dt.next( "dd" );
308 children.slideToggle( "fast", function () {
309
310 if ( children.is( ":visible" ) ) {
311 icon.addClass( "icon-minus-sign" ).removeClass( "icon-plus-sign" ).removeClass( "icon-white" );
312 dt.addClass( "member-open" ).animate( "member-collapsed" );
313 } else {
314 icon.addClass( "icon-plus-sign" ).removeClass( "icon-minus-sign" ).addClass( "icon-white" );
315 dt.addClass( "member-collapsed" ).removeClass( "member-open" );
316 }
317 } );
318 } );
319
320 } );
321 } );
322</script>
323
324
325<!--Google Analytics-->
326
327
328
329 <script type="text/javascript">
330 $(document).ready(function() {
331 SearcherDisplay.init();
332 });
333 </script>
334
335
336</body>
337</html>