rapidgame
Version:
A cross-platform commandline tool that prebuilds cocos2d-x libraries for Windows, Mac, Linux, Android and iOS. Also a game templating system.
719 lines (479 loc) • 35.7 kB
HTML
<html>
<head>
<title>Game.js</title>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<link rel="stylesheet" media="all" href="public/stylesheets/normalize.css" />
<link rel="stylesheet" media="all" href="docco.css" />
</head>
<body>
<div class="container">
<div class="page">
<h2 class="title">RapidGame</h2>
<h2 class="contact"></h2>
<div class="header">
<h1>Game.js</h1>
<div class="toc"><a href="#toc">Jump to Table of Contents</a></div>
</div>
<blockquote>
</blockquote>
<p>The main Game object is a singleton providing boot code, main functions, and other commonly-used, globally-accessible methods.</p>
<ol>
<li>All code in this file is applicable to any game project in general.</li>
<li>If you need to extend the Game object with project-specific code, use <a href="TwoScene.html">TwoScene.js</a>.</li>
</ol>
<h3 id="game">Game</h3>
<p>Get or create the Game object.</p>
<div class='highlight'><pre><span class="hljs-keyword">var</span> Game = Game || {};</pre></div>
<h3 id="game-gettargetframerate">Game.getTargetFrameRate</h3>
<p>Return the target frame rate to use. Scale back in HTML5 mode to save a CPU fan somewhere.</p>
<div class='highlight'><pre>Game.getTargetFrameRate = <span class="hljs-function"><span class="hljs-keyword">function</span><span class="hljs-params">()</span> {</span>
<span class="hljs-keyword">return</span> <span class="hljs-keyword">this</span>.isHtml5() ? <span class="hljs-number">30</span> : <span class="hljs-number">60</span>;
};</pre></div>
<h3 id="game-ishtml5">Game.isHtml5</h3>
<p>Return true if the game is running in HTML5 mode.</p>
<div class='highlight'><pre>Game.isHtml5 = <span class="hljs-function"><span class="hljs-keyword">function</span><span class="hljs-params">()</span> {</span>
<span class="hljs-keyword">if</span> (<span class="hljs-keyword">typeof</span> <span class="hljs-keyword">this</span>._isHtml5 === <span class="hljs-string">"undefined"</span>) {
Game.assert(cc.sys);
<span class="hljs-keyword">this</span>._isHtml5 = cc.sys.isNative ? <span class="hljs-literal">false</span> : <span class="hljs-literal">true</span>;
}
<span class="hljs-keyword">return</span> <span class="hljs-keyword">this</span>._isHtml5;
};</pre></div>
<h3 id="game-isdesktop">Game.isDesktop</h3>
<p>Return true if the game is running on a native desktop OS.</p>
<div class='highlight'><pre>Game.isDesktop = <span class="hljs-function"><span class="hljs-keyword">function</span><span class="hljs-params">()</span> {</span>
<span class="hljs-keyword">if</span> (<span class="hljs-keyword">typeof</span> <span class="hljs-keyword">this</span>._isDesktop === <span class="hljs-string">"undefined"</span>) {
<span class="hljs-keyword">if</span> (<span class="hljs-keyword">this</span>.isHtml5()) {
<span class="hljs-keyword">this</span>._isDesktop = <span class="hljs-literal">false</span>;
} <span class="hljs-keyword">else</span> {
<span class="hljs-keyword">this</span>._isDesktop = (cc.sys.os === cc.sys.OS_OSX
|| cc.sys.os === cc.sys.OS_WINDOWS
|| cc.sys.os === cc.sys.OS_LINUX);
}
}
<span class="hljs-keyword">return</span> <span class="hljs-keyword">this</span>._isDesktop;
};</pre></div>
<h3 id="game-rand">Game.rand</h3>
<p>Return a random integer between 0 and the given value.</p>
<div class='highlight'><pre>Game.rand = <span class="hljs-function"><span class="hljs-keyword">function</span><span class="hljs-params">(mod)</span> {</span>
<span class="hljs-keyword">var</span> r = <span class="hljs-built_in">Math</span>.random();
<span class="hljs-keyword">if</span> (<span class="hljs-keyword">typeof</span> mod !== <span class="hljs-string">'undefined'</span>) {
r *= <span class="hljs-number">0xffffff</span>;
r = <span class="hljs-built_in">parseInt</span>(r);
r %= mod;
}
<span class="hljs-keyword">return</span> r;
};</pre></div>
<h3 id="game-getwinsize">Game.getWinSize</h3>
<p>Return the current size of the window or screen.</p>
<div class='highlight'><pre>Game.getWinSize = <span class="hljs-function"><span class="hljs-keyword">function</span><span class="hljs-params">()</span> {</span>
<span class="hljs-keyword">var</span> size = cc.director.getWinSizeInPixels();
<span class="hljs-keyword">if</span> (<span class="hljs-keyword">typeof</span> <span class="hljs-keyword">this</span>._winSize === <span class="hljs-string">'undefined'</span> || (size.width && size.height)) {
<span class="hljs-keyword">this</span>._winSize = size;
}
<span class="hljs-keyword">return</span> <span class="hljs-keyword">this</span>._winSize;
};</pre></div>
<h3 id="game-scale">Game.scale</h3>
<p>Scale a number by a factor based on the screen size.</p>
<div class='highlight'><pre>Game.scale = <span class="hljs-function"><span class="hljs-keyword">function</span><span class="hljs-params">(floatValue)</span> {</span>
<span class="hljs-keyword">if</span> (<span class="hljs-keyword">typeof</span> <span class="hljs-keyword">this</span>._scaleFactor === <span class="hljs-string">"undefined"</span>)
<span class="hljs-keyword">this</span>._scaleFactor = <span class="hljs-number">1.0</span>;
<span class="hljs-keyword">return</span> floatValue * <span class="hljs-keyword">this</span>._scaleFactor;
};</pre></div>
<h3 id="game-centralize">Game.centralize</h3>
<p>Return a point relative to the center of the screen and scaled.</p>
<div class='highlight'><pre>Game.centralize = <span class="hljs-function"><span class="hljs-keyword">function</span><span class="hljs-params">(x, y)</span> {</span>
<span class="hljs-keyword">var</span> winSize = <span class="hljs-keyword">this</span>.getWinSize();
<span class="hljs-keyword">return</span> cc.p(Game.scale(x) + winSize.width * <span class="hljs-number">.5</span>,
Game.scale(y) + winSize.height * <span class="hljs-number">.5</span>);
};</pre></div>
<h3 id="game-alert">Game.alert</h3>
<p>Safely call <code>alert</code>.</p>
<div class='highlight'><pre>Game.alert = <span class="hljs-function"><span class="hljs-keyword">function</span><span class="hljs-params">(msg)</span> {</span>
<span class="hljs-keyword">if</span>(<span class="hljs-keyword">typeof</span> alert === <span class="hljs-string">"function"</span>) {
alert(msg);
} <span class="hljs-keyword">else</span> {
cc.log(msg);
}
};</pre></div>
<h3 id="game-assert">Game.assert</h3>
<p>Throw an error if the given object is undefined or boolean is false.</p>
<div class='highlight'><pre>Game.assert = <span class="hljs-function"><span class="hljs-keyword">function</span><span class="hljs-params">(objOrBool, errMsg)</span> {</span>
<span class="hljs-keyword">if</span> (<span class="hljs-keyword">typeof</span> objOrBool === <span class="hljs-string">"undefined"</span>
|| (<span class="hljs-keyword">typeof</span> objOrBool === <span class="hljs-string">"boolean"</span> && !objOrBool)
) {
errMsg = errMsg || <span class="hljs-string">"Couldn't load the game. Please try a newer browser."</span>;
alert(errMsg);
debugger;
<span class="hljs-keyword">throw</span> errMsg;
}
};</pre></div>
<h3 id="game-clone">Game.clone</h3>
<p>Clone an object or array so the original can remained unchanged. If passed an undefined value, an empty array is returned.</p>
<div class='highlight'><pre>Game.clone = <span class="hljs-function"><span class="hljs-keyword">function</span><span class="hljs-params">(obj)</span> {</span>
<span class="hljs-keyword">if</span>(<span class="hljs-keyword">typeof</span> obj !== <span class="hljs-string">"undefined"</span>) {
<span class="hljs-keyword">return</span> <span class="hljs-built_in">JSON</span>.parse(<span class="hljs-built_in">JSON</span>.stringify(obj));
}
<span class="hljs-keyword">return</span> [];
};</pre></div>
<h3 id="game-localizecurrency">Game.localizeCurrency</h3>
<p>Return the currency amount localized. Currently the method only localizes to the United States currency format.</p>
<div class='highlight'><pre>Game.localizeCurrency = <span class="hljs-function"><span class="hljs-keyword">function</span><span class="hljs-params">(amount)</span> {</span>
<span class="hljs-keyword">return</span> <span class="hljs-string">"$"</span> + <span class="hljs-built_in">parseFloat</span>(amount).toFixed(<span class="hljs-number">2</span>);
};</pre></div>
<h3 id="game-getlanguagecode">Game.getLanguageCode</h3>
<p>Return the current language code. Example: <code>en</code>.</p>
<div class='highlight'><pre>Game.getLanguageCode = <span class="hljs-function"><span class="hljs-keyword">function</span><span class="hljs-params">()</span> {</span>
<span class="hljs-keyword">var</span> strings;
<span class="hljs-keyword">if</span> (<span class="hljs-keyword">typeof</span> <span class="hljs-keyword">this</span>._language === <span class="hljs-string">"undefined"</span>) {
<span class="hljs-keyword">this</span>._language = cc.sys.language;
strings = Game.config[<span class="hljs-string">"strings"</span>];
<span class="hljs-keyword">if</span> (strings && <span class="hljs-keyword">typeof</span> strings[<span class="hljs-keyword">this</span>._language] === <span class="hljs-string">"undefined"</span>) {
cc.log(<span class="hljs-string">"Don't have strings for language: "</span> + <span class="hljs-keyword">this</span>._language);
<span class="hljs-keyword">this</span>._language = <span class="hljs-string">"en"</span>;
}
}
<span class="hljs-keyword">return</span> <span class="hljs-keyword">this</span>._language;
};</pre></div>
<h3 id="game-getlocalizedstring">Game.getLocalizedString</h3>
<p>Lookup and return a localized string. Configure localized strings in <code>Game.config["strings"][languageCode]</code>.</p>
<div class='highlight'><pre>Game.getLocalizedString = <span class="hljs-function"><span class="hljs-keyword">function</span><span class="hljs-params">(key)</span> {</span>
<span class="hljs-keyword">var</span> strings,
code = <span class="hljs-keyword">this</span>.getLanguageCode();
strings = Game.config[<span class="hljs-string">"strings"</span>][code];
<span class="hljs-keyword">if</span> (<span class="hljs-keyword">typeof</span> strings[key] !== <span class="hljs-string">"undefined"</span>) {
<span class="hljs-keyword">return</span> strings[key];
}
<span class="hljs-keyword">if</span> (key && key.length) {
cc.log(<span class="hljs-string">"Couldn't find string["</span> + code + <span class="hljs-string">"]["</span> + key + <span class="hljs-string">"]"</span>);
}
<span class="hljs-keyword">return</span> <span class="hljs-string">""</span>;
};</pre></div>
<h3 id="game-addtouchlisteners">Game.addTouchListeners</h3>
<p>Add touch listeners. Callback will get eventType, touches and event parameters.</p>
<div class='highlight'><pre>Game.addTouchListeners = <span class="hljs-function"><span class="hljs-keyword">function</span><span class="hljs-params">(layer, callback)</span> {</span>
cc.eventManager.addListener({
event: cc.EventListener.TOUCH_ALL_AT_ONCE,
onTouchesBegan: <span class="hljs-function"><span class="hljs-keyword">function</span><span class="hljs-params">(touches, event)</span> {</span><span class="hljs-keyword">if</span>(touches) {callback(<span class="hljs-string">"began"</span>, touches, event);}},
onTouchesMoved: <span class="hljs-function"><span class="hljs-keyword">function</span><span class="hljs-params">(touches, event)</span> {</span><span class="hljs-keyword">if</span>(touches) {callback(<span class="hljs-string">"moved"</span>, touches, event);}},
onTouchesEnded: <span class="hljs-function"><span class="hljs-keyword">function</span><span class="hljs-params">(touches, event)</span> {</span><span class="hljs-keyword">if</span>(touches) {callback(<span class="hljs-string">"ended"</span>, touches, event);}},
onTouchesCancelled: <span class="hljs-function"><span class="hljs-keyword">function</span><span class="hljs-params">(touches, event)</span> {</span><span class="hljs-keyword">if</span>(touches) {callback(<span class="hljs-string">"cancelled"</span>, touches, event);}}
}, layer);
};</pre></div>
<h3 id="game-getrunninglayer">Game.getRunningLayer</h3>
<p>Returns the running scene’s child layer.</p>
<p>Scenes can create a member variable named <code>layer</code> which will be used by this method.</p>
<div class='highlight'><pre>Game.getRunningLayer = <span class="hljs-function"><span class="hljs-keyword">function</span><span class="hljs-params">()</span> {</span>
<span class="hljs-keyword">var</span> node = cc.director.getRunningScene();
<span class="hljs-keyword">if</span> (node) {
<span class="hljs-keyword">if</span> (node.layer) {
node = node.layer;
}
}
<span class="hljs-keyword">return</span> node;
};</pre></div>
<h3 id="game-callrunninglayer">Game.callRunningLayer</h3>
<p>Call the running scene’s layer’s method.</p>
<div class='highlight'><pre>Game.callRunningLayer = <span class="hljs-function"><span class="hljs-keyword">function</span><span class="hljs-params">(methodName, param1, param2, param3)</span> {</span>
<span class="hljs-keyword">var</span> layer = <span class="hljs-keyword">this</span>.getRunningLayer();
<span class="hljs-keyword">if</span> (layer && layer[methodName]) {
layer[methodName](param1, param2, param3);
} <span class="hljs-keyword">else</span> {
<span class="hljs-comment">/*cc.log("Couldn't find method '" + methodName + "' in running scene or layer.");*/</span>
}
};</pre></div>
<h3 id="game-getresourcestopreload">Game.getResourcesToPreload</h3>
<p>Return an array of files to preload.</p>
<div class='highlight'><pre>Game.getResourcesToPreload = <span class="hljs-function"><span class="hljs-keyword">function</span><span class="hljs-params">()</span> {</span>
<span class="hljs-keyword">var</span> dir = (<span class="hljs-keyword">typeof</span>(Game.getResourceDir) === <span class="hljs-string">"function"</span> ? Game.getResourceDir() : <span class="hljs-string">""</span>),
files = Game.config[<span class="hljs-string">"preload"</span>],
ret = [],
i;
<span class="hljs-keyword">if</span> (files) {
<span class="hljs-keyword">for</span> (i = <span class="hljs-number">0</span>; i < files.length; i += <span class="hljs-number">1</span>) {
<span class="hljs-keyword">if</span> (files[i] && files[i].length) {
ret[i] = dir + files[i];
}
}
}
<span class="hljs-keyword">return</span> ret;
};</pre></div>
<h3 id="game-runinitialscene">Game.runInitialScene</h3>
<p>Loads resources and calls the initial scene. Called by <code>Game.main</code>.</p>
<div class='highlight'><pre>Game.runInitialScene = <span class="hljs-function"><span class="hljs-keyword">function</span><span class="hljs-params">()</span> {</span>
<span class="hljs-keyword">var</span> Scene = window[cc.game.config.initialScene],
scene;
<span class="hljs-keyword">if</span> (<span class="hljs-keyword">typeof</span> Game.loadResources === <span class="hljs-string">"function"</span>)
Game.loadResources();
scene = <span class="hljs-keyword">new</span> Scene;
scene.init();
cc.director.runScene(scene);
};</pre></div>
<h3 id="game-setcanvassize">Game.setCanvasSize</h3>
<p>Sets the size of the game canvas.</p>
<div class='highlight'><pre>Game.setCanvasSize = <span class="hljs-function"><span class="hljs-keyword">function</span><span class="hljs-params">(e, w, h)</span> {</span>
<span class="hljs-keyword">var</span> allowHtmlRetina = <span class="hljs-literal">false</span>;
<span class="hljs-keyword">this</span>._pixelRatio = (allowHtmlRetina ? window.devicePixelRatio || <span class="hljs-number">1</span> : <span class="hljs-number">1</span>);
e = e || document.getElementById(cc.game.config[cc.game.CONFIG_KEY.id]);
w = w || document.body.clientWidth; <span class="hljs-comment">// or scrollWidth</span>
h = h || document.body.clientHeight;
e.width = w * <span class="hljs-keyword">this</span>._pixelRatio;
e.height = h * <span class="hljs-keyword">this</span>._pixelRatio;
e.style.width = w + <span class="hljs-string">"px"</span>;
e.style.height = h + <span class="hljs-string">"px"</span>;
e.style.backgroundColor = document.body.style.backgroundColor;
cc.log(<span class="hljs-string">"Set #"</span> + e.getAttribute(<span class="hljs-string">"id"</span>) + <span class="hljs-string">" pixel ratio "</span> + <span class="hljs-keyword">this</span>._pixelRatio +
<span class="hljs-string">", size "</span> + e.width + <span class="hljs-string">"x"</span> + e.height +
<span class="hljs-string">", style "</span> + e.style.width + <span class="hljs-string">" x "</span> + e.style.height +
<span class="hljs-string">", parent "</span> + e.parentNode.getAttribute(<span class="hljs-string">"id"</span>));
<span class="hljs-keyword">if</span> (<span class="hljs-keyword">typeof</span> <span class="hljs-keyword">this</span>._origCanvasSize === <span class="hljs-string">"undefined"</span>) {
<span class="hljs-keyword">this</span>._origCanvasSize = {width: w, height: h};
}
};</pre></div>
<h3 id="game-loadsoundenabled">Game.loadSoundEnabled</h3>
<p>Load the <code>soundEnabled</code> preference from local storage.</p>
<div class='highlight'><pre>Game.loadSoundEnabled = <span class="hljs-function"><span class="hljs-keyword">function</span><span class="hljs-params">()</span> {</span>
<span class="hljs-keyword">var</span> enabled = cc.sys.localStorage.getItem(<span class="hljs-string">"soundEnabled"</span>);
<span class="hljs-comment">/*cc.log("Loaded sound enabled: " + enabled);*/</span>
<span class="hljs-keyword">if</span> (enabled === <span class="hljs-literal">null</span> || enabled === <span class="hljs-string">""</span>) {
<span class="hljs-keyword">this</span>.enableSound(<span class="hljs-literal">true</span>);
} <span class="hljs-keyword">else</span> {
<span class="hljs-keyword">this</span>._soundEnabled = (enabled === <span class="hljs-string">"true"</span> || enabled === <span class="hljs-literal">true</span>);
}
<span class="hljs-comment">/*cc.log("Sound enabled is now: " + this._soundEnabled);*/</span>
};</pre></div>
<h3 id="game-enablesound">Game.enableSound</h3>
<p>Enable or disable sound.</p>
<div class='highlight'><pre>Game.enableSound = <span class="hljs-function"><span class="hljs-keyword">function</span><span class="hljs-params">(enabled)</span> {</span>
<span class="hljs-keyword">this</span>._soundEnabled = enabled ? <span class="hljs-literal">true</span> : <span class="hljs-literal">false</span>;
cc.sys.localStorage.setItem(<span class="hljs-string">"soundEnabled"</span>, <span class="hljs-keyword">this</span>._soundEnabled);
<span class="hljs-keyword">if</span> (!<span class="hljs-keyword">this</span>.isSoundEnabled()) {
cc.audioEngine.stopMusic();
<span class="hljs-comment">/* Check that the music stopped (Chrome bug). */</span>
cc.director.getRunningScene().schedule(<span class="hljs-function"><span class="hljs-keyword">function</span><span class="hljs-params">()</span>{</span>
<span class="hljs-keyword">if</span> (!Game.isSoundEnabled()) {
cc.audioEngine.stopMusic();
}
}, <span class="hljs-number">1</span>, <span class="hljs-number">15</span>);
}
};</pre></div>
<h3 id="game-togglesoundenabled">Game.toggleSoundEnabled</h3>
<p>Toggle whether sound is enabled.</p>
<div class='highlight'><pre>Game.toggleSoundEnabled = <span class="hljs-function"><span class="hljs-keyword">function</span><span class="hljs-params">()</span> {</span>
<span class="hljs-keyword">this</span>.enableSound(!<span class="hljs-keyword">this</span>.isSoundEnabled());
};</pre></div>
<h3 id="game-issoundenabled">Game.isSoundEnabled</h3>
<p>Return true if sound is enabled.</p>
<div class='highlight'><pre>Game.isSoundEnabled = <span class="hljs-function"><span class="hljs-keyword">function</span><span class="hljs-params">()</span> {</span>
<span class="hljs-keyword">return</span> <span class="hljs-keyword">this</span>._soundEnabled ? <span class="hljs-literal">true</span> : <span class="hljs-literal">false</span>;
};</pre></div>
<h3 id="game-playeffect">Game.playEffect</h3>
<p>Plays the sound effect with the given filename if sound is enabled.</p>
<div class='highlight'><pre>Game.playEffect = <span class="hljs-function"><span class="hljs-keyword">function</span><span class="hljs-params">(filename)</span> {</span>
<span class="hljs-keyword">if</span> (<span class="hljs-keyword">this</span>.isSoundEnabled()) {
<span class="hljs-comment">/* Automatically prefix with resource path. */</span>
<span class="hljs-keyword">if</span> (cc.loader.resPath && filename.indexOf(<span class="hljs-string">"/"</span>) < <span class="hljs-number">0</span>) {
filename = cc.loader.resPath + <span class="hljs-string">"/"</span> + filename;
}
<span class="hljs-keyword">return</span> cc.audioEngine.playEffect(filename);
}
<span class="hljs-keyword">return</span> -<span class="hljs-number">1</span>;
};</pre></div>
<h3 id="game-stopeffect">Game.stopEffect</h3>
<p>Stops the sound effect with the given id.</p>
<div class='highlight'><pre>Game.stopEffect = <span class="hljs-function"><span class="hljs-keyword">function</span><span class="hljs-params">(audioId)</span> {</span>
cc.audioEngine.stopEffect(audioId);
};</pre></div>
<h3 id="game-playmusic">Game.playMusic</h3>
<p>Plays the music file with the given filename if sound is enabled.</p>
<div class='highlight'><pre>Game.playMusic = <span class="hljs-function"><span class="hljs-keyword">function</span><span class="hljs-params">(filename)</span> {</span>
<span class="hljs-keyword">if</span> (<span class="hljs-keyword">this</span>.isSoundEnabled()) {
<span class="hljs-comment">/* Automatically prefix with resource path. */</span>
<span class="hljs-keyword">if</span> (cc.loader.resPath && filename.indexOf(<span class="hljs-string">"/"</span>) < <span class="hljs-number">0</span>) {
filename = cc.loader.resPath + <span class="hljs-string">"/"</span> + filename;
}
cc.audioEngine.stopMusic();
cc.audioEngine.playMusic(filename, <span class="hljs-literal">true</span>);
}
};</pre></div>
<h3 id="game-stopmusic">Game.stopMusic</h3>
<p>Stop music.</p>
<div class='highlight'><pre>Game.stopMusic = <span class="hljs-function"><span class="hljs-keyword">function</span><span class="hljs-params">()</span> {</span>
cc.audioEngine.stopMusic();
};</pre></div>
<h3 id="game-startphysics">Game.startPhysics</h3>
<p>Start the physics engine.</p>
<div class='highlight'><pre>Game.startPhysics = <span class="hljs-function"><span class="hljs-keyword">function</span><span class="hljs-params">(gravity)</span> {</span>
<span class="hljs-keyword">if</span> (<span class="hljs-keyword">this</span>.space !== <span class="hljs-string">"undefined"</span>) {
<span class="hljs-keyword">this</span>.space = <span class="hljs-literal">null</span>;
}
<span class="hljs-keyword">this</span>.space = <span class="hljs-keyword">new</span> cp.Space();
<span class="hljs-keyword">this</span>.space.gravity = cp.v(gravity.x, gravity.y);
<span class="hljs-keyword">this</span>._physicsAccumulator = <span class="hljs-number">0</span>;
<span class="hljs-keyword">if</span> (cc.game.config.debugPhysics) {
<span class="hljs-keyword">this</span>._physicsDebugNode = cc.PhysicsDebugNode.create(<span class="hljs-keyword">this</span>.space);
cc.director.getRunningScene().addChild(<span class="hljs-keyword">this</span>._physicsDebugNode, <span class="hljs-number">100</span>);
}
};</pre></div>
<h3 id="game-stepphysics">Game.stepPhysics</h3>
<p>Step the physics engine.</p>
<div class='highlight'><pre>Game.stepPhysics = <span class="hljs-function"><span class="hljs-keyword">function</span><span class="hljs-params">(delta)</span> {</span>
<span class="hljs-keyword">var</span> step = <span class="hljs-number">1</span> / <span class="hljs-number">60</span>;
<span class="hljs-keyword">this</span>._physicsAccumulator += delta;
<span class="hljs-keyword">while</span> (<span class="hljs-keyword">this</span>._physicsAccumulator > step) {
Game.space.step(step);
<span class="hljs-keyword">this</span>._physicsAccumulator -= step;
}
};</pre></div>
<h3 id="game-createphysicsbox">Game.createPhysicsBox</h3>
<p>Create a static physics box.</p>
<div class='highlight'><pre>Game.createPhysicsBox = <span class="hljs-function"><span class="hljs-keyword">function</span><span class="hljs-params">(_x1, _y1, _x2, _y2, elasticity, friction, collisionType)</span> {</span>
<span class="hljs-keyword">var</span> w = (_x2 - _x1) || <span class="hljs-number">2</span>,
h = (_y2 - _y1) || <span class="hljs-number">2</span>,
box = <span class="hljs-keyword">new</span> cp.BoxShape(<span class="hljs-keyword">this</span>.space.staticBody, <span class="hljs-built_in">Math</span>.abs(w), <span class="hljs-built_in">Math</span>.abs(h));
box.body.setPos(cp.v(_x1 + w * <span class="hljs-number">.5</span>, _y1 + h * <span class="hljs-number">.5</span>));
box.setElasticity(elasticity || <span class="hljs-number">1</span>);
box.setFriction(friction || <span class="hljs-number">0</span>);
box.setCollisionType(collisionType || <span class="hljs-number">0</span>);
<span class="hljs-keyword">this</span>.space.addStaticShape(box);
<span class="hljs-keyword">return</span> box;
};</pre></div>
<h3 id="game-createphysicssprite">Game.createPhysicsSprite</h3>
<p>Create a dynamic physics sprite.</p>
<div class='highlight'><pre>Game.createPhysicsSprite = <span class="hljs-function"><span class="hljs-keyword">function</span><span class="hljs-params">(filename, elasticity, friction, isCircle, collisionType)</span> {</span>
<span class="hljs-keyword">var</span> sprite = cc.PhysicsSprite.create(filename),
body,
shape,
w = sprite.width || <span class="hljs-number">1</span>,
h = sprite.height || <span class="hljs-number">1</span>;
body = <span class="hljs-keyword">new</span> cp.Body(<span class="hljs-number">1</span>, cp.momentForBox(<span class="hljs-number">1</span>, w, h))
<span class="hljs-keyword">this</span>.space.addBody(body);
<span class="hljs-keyword">if</span> (isCircle) {
shape = <span class="hljs-keyword">new</span> cp.CircleShape(body, w * <span class="hljs-number">.5</span>, cp.v(<span class="hljs-number">0</span>,<span class="hljs-number">0</span>));
} <span class="hljs-keyword">else</span> {
shape = <span class="hljs-keyword">new</span> cp.BoxShape(body, w, h);
}
shape.setElasticity(elasticity || <span class="hljs-number">1</span>);
shape.setFriction(friction || <span class="hljs-number">0</span>);
shape.setCollisionType(collisionType || <span class="hljs-number">0</span>);
<span class="hljs-keyword">this</span>.space.addShape(shape);
sprite.setBody(body);
<span class="hljs-keyword">return</span> sprite;
};</pre></div>
<h3 id="game-boot">Game.boot</h3>
<p>Boot method. Different for HTML5 versus native. Called at the end of this file.</p>
<div class='highlight'><pre>Game.boot = <span class="hljs-function"><span class="hljs-keyword">function</span><span class="hljs-params">(global)</span> {</span>
cc.loader.resPath = cc.game.config.resourcePath;
<span class="hljs-keyword">if</span> (<span class="hljs-keyword">this</span>.isHtml5()) {
Game.setCanvasSize();
Game.setCanvasSize(document.getElementById(<span class="hljs-string">"gameDiv"</span>),
<span class="hljs-keyword">this</span>._origCanvasSize.width, <span class="hljs-keyword">this</span>._origCanvasSize.height);
} <span class="hljs-keyword">else</span> {
<span class="hljs-comment">/* Implement timers. */</span>
<span class="hljs-built_in">require</span>(cc.loader.resPath + <span class="hljs-string">"/lib/timers.js"</span>);
<span class="hljs-keyword">this</span>.timerLoop = makeWindowTimer(global, <span class="hljs-function"><span class="hljs-keyword">function</span><span class="hljs-params">(ms)</span>{</span>});
cc.director.getScheduler().scheduleCallbackForTarget(<span class="hljs-keyword">this</span>, <span class="hljs-keyword">this</span>.timerLoop);
}
<span class="hljs-comment">/*setTimeout(function(){cc.log("Confirmed setTimeout() works");}, 3333);*/</span>
<span class="hljs-comment">/* Embed the equivalent of main.js for faster loading. */</span>
cc.game.onStart = <span class="hljs-function"><span class="hljs-keyword">function</span><span class="hljs-params">()</span>{</span>
Game.main();
};
<span class="hljs-comment">/*
Native client boot happens like this:
1. cc.game.run() ->
2. cc.game.prepare() ->
3. jsb.js ->
4. jsb_cocos2d.js, etc...
*/</span>
cc.game.run();
};</pre></div>
<h3 id="game-main">Game.main</h3>
<p>The main method. Called by <code>cc.game.onStart</code>.</p>
<div class='highlight'><pre>Game.main = <span class="hljs-function"><span class="hljs-keyword">function</span><span class="hljs-params">()</span> {</span>
<span class="hljs-keyword">var</span> i,
size = {},
sheets,
cacher,
dirs = [];
<span class="hljs-comment">/* Get config */</span>
Game.config = Game.config || {};
<span class="hljs-keyword">for</span> (i <span class="hljs-keyword">in</span> cc.game.config) {
<span class="hljs-keyword">if</span> (cc.game.config.hasOwnProperty(i)) {
Game.config[i] = Game.clone(cc.game.config[i]);
}
}
<span class="hljs-keyword">this</span>.loadSoundEnabled();
cc.defineGetterSetter(Game, <span class="hljs-string">"winSize"</span>, Game.getWinSize);
Game.contentWidth = cc.game.config.designWidth || Game.winSize.width;
Game.contentHeight = cc.game.config.designHeight || Game.winSize.height;
<span class="hljs-keyword">if</span> (Game.winSize.width > Game.winSize.height) {
size.width = (Game.contentHeight / Game.winSize.height) * Game.winSize.width;
size.height = Game.contentHeight;
Game.contentX = (size.width - Game.contentWidth) * <span class="hljs-number">.5</span>;
Game.contentY = <span class="hljs-number">0</span>;
} <span class="hljs-keyword">else</span> {
size.width = Game.contentWidth;
size.height = (Game.contentWidth / Game.winSize.width) * Game.winSize.height;
Game.contentX = <span class="hljs-number">0</span>;
Game.contentY = (size.height - Game.contentHeight) * <span class="hljs-number">.5</span>;
}
cc.director.setDisplayStats(cc.game.config[cc.game.CONFIG_KEY.showFPS]);
cc.view.setDesignResolutionSize(size.width, size.height, cc.ResolutionPolicy.SHOW_ALL);
cc.view.resizeWithBrowserSize(<span class="hljs-literal">true</span>);
cc.director.setAnimationInterval(<span class="hljs-number">1.0</span> / <span class="hljs-keyword">this</span>.getTargetFrameRate());
cc.log(<span class="hljs-built_in">parseInt</span>(Game.winSize.width) + <span class="hljs-string">"x"</span> + <span class="hljs-built_in">parseInt</span>(Game.winSize.height)
+ <span class="hljs-string">" ["</span> + <span class="hljs-built_in">parseInt</span>(Game.contentX) + <span class="hljs-string">","</span> + <span class="hljs-built_in">parseInt</span>(Game.contentY) + <span class="hljs-string">" "</span>
+ <span class="hljs-built_in">parseInt</span>(Game.contentWidth) + <span class="hljs-string">"x"</span> + <span class="hljs-built_in">parseInt</span>(Game.contentHeight) + <span class="hljs-string">"]"</span>
+ <span class="hljs-string">", language: "</span> + Game.getLanguageCode()
+ <span class="hljs-string">", "</span> + <span class="hljs-built_in">parseInt</span>(<span class="hljs-number">1.0</span> / cc.director.getAnimationInterval()) + <span class="hljs-string">" fps"</span>);
<span class="hljs-keyword">if</span> (<span class="hljs-keyword">this</span>.isHtml5()) {
Game.addImageData = <span class="hljs-function"><span class="hljs-keyword">function</span><span class="hljs-params">()</span> {</span>};
} <span class="hljs-keyword">else</span> {
Game.config[<span class="hljs-string">"font"</span>] = cc.loader.resPath + <span class="hljs-string">"/"</span> + Game.config[<span class="hljs-string">"font"</span>] + <span class="hljs-string">".ttf"</span>;
}
<span class="hljs-keyword">if</span> (<span class="hljs-keyword">typeof</span> Game.initPro === <span class="hljs-string">"function"</span>) {
Game.initPro();
}
<span class="hljs-comment">/* Preload. */</span>
cc.LoaderScene.preload(Game.getResourcesToPreload(), Game.runInitialScene, <span class="hljs-keyword">this</span>);
};</pre></div>
<h3 id="boot">Boot</h3>
<p>Call <code>Game.boot</code> passing in the global variable.</p>
<div class='highlight'><pre>Game.boot(<span class="hljs-keyword">this</span>);</pre></div>
<a name="toc"> </a>
<div id="bottom-toc">
<h3>Table of Contents</h3>
<ol>
<li>
<a class="source" href="README.html">
README.md
</a>
</li>
<li>
<a class="source" href="GameScene.html">
GameScene.js
</a>
</li>
<li>
<a class="source" href="MenuScene.html">
MenuScene.js
</a>
</li>
<li>
<a class="source" href="Game.html">
Game.js
</a>
</li>
<li>
<a class="source" href="Server.html">
Server.js
</a>
</li>
</ol>
</div>
<div class="fleur">h</div>
</div>
</div>
</body>
</html>