рд╡рд░реНрддрдорд╛рди рдореЗрдВ, рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдореЗрдВ рдПрдХ рдмрд╣реБрдд рдЖрд╢рд╛рдЬрдирдХ рджрд┐рд╢рд╛ рдХреНрд░реЙрд╕-рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо рд╡рд┐рдХрд╛рд╕ рд╣реИред рд╡рд┐рднрд┐рдиреНрди рд╕рд╛рдзрдиреЛрдВ (Appcelerator Titanium, PhoneGap, moSync) рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж, рдореИрдВ рдлрд┐рд░ рднреА Appcelerator Titanium рдХреЛ рд╡рд░реАрдпрддрд╛ рджреЗрддрд╛ рд╣реВрдВред
рдЯрд╛рдЗрдЯреЗрдирд┐рдпрдо рдЖрдкрдХреЛ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ Android рдФрд░ iOS рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрдирд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рд╡рд░реНрддрдорд╛рди рдореЗрдВ, рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рд╡реЗрдмрд╕рд╛рдЗрдЯ рдХрд╛ рджрд╛рд╡рд╛ рд╣реИ рдХрд┐ рдЗрд╕ рдордВрдЪ рдкрд░ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреА рд╕рдВрдЦреНрдпрд╛ 300,000 рддрдХ рдкрд╣реБрдВрдЪ рдЬрд╛рддреА рд╣реИред
рдПрдХ рджрд┐рд▓рдЪрд╕реНрдк рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рдЯрд╛рдЗрдЯреЗрдирд┐рдпрдо рдкрд░ рдЖрдк рди рдХреЗрд╡рд▓ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдмрд▓реНрдХрд┐ рдореЛрдмрд╛рдЗрд▓ рдЙрдкрдХрд░рдгреЛрдВ рдХреЗ рд▓рд┐рдП рдкреВрд░реНрдг-рдЧреЗрдо рднреА рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВред
рдореИрдВ OpenGL ES рдкрд░ рдЖрдзрд╛рд░рд┐рдд рдЯрд╛рдЗрдЯреЗрдирд┐рдпрдо рдореЛрдмрд╛рдЗрд▓ - QuickTiGame2d рдХреЗ рд▓рд┐рдП рджреЛ-рдЖрдпрд╛рдореА рдЧреЗрдо рдЗрдВрдЬрди рдореЙрдбреНрдпреВрд▓ рдкрд░ рдЖрдкрдХрд╛ рдзреНрдпрд╛рди рдЖрдХрд░реНрд╖рд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛, рдЬреЛ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдПрдВрдбреНрд░реЙрдЗрдб рдФрд░ рдЖрдИрдУрдПрд╕ рдХреЗ рд▓рд┐рдП рд╡рд┐рдХрд╛рд╕ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИред рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ рд╣рдо рд╕реНрдерд╛рдкрдирд╛ рдкреНрд░рдХреНрд░рд┐рдпрд╛, рд╕рд╛рде рд╣реА рд╕рд╛рде рдЗрд╕ рдЗрдВрдЬрди рдХреЗ рдореБрдЦреНрдп рдмрд┐рдВрджреБрдУрдВ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВрдЧреЗ, рдФрд░ рдЕрдЧрд▓рд╛ рд╕реАрдзреЗ рдПрдХ рдЫреЛрдЯреЗ рдХреНрд░реЙрд╕-рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо рдЧреЗрдо рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХрд╛ рд╡рд░реНрдгрди рдХрд░реЗрдЧрд╛ред
рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ рдЪреАрдЬреЗрдВ, рдЖрдкрдХреЛ
рдпрд╣рд╛рдВ рдирд╡реАрдирддрдо рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЛ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП: рдПрдХ рдПрдВрдбреНрд░реЙрдЗрдб рдХреЗ рд▓рд┐рдП, рдПрдХ рдЖрдИрдУрдПрд╕ рдХреЗ рд▓рд┐рдПред рдЗрд╕ рд▓реЗрдЦрди рдХреЗ рд╕рдордп, рдирд╡реАрдирддрдо рд╕рдВрд╕реНрдХрд░рдг 1.2 рдерд╛ (рд╣рд╛рд▓ рд╣реА рдореЗрдВ рдЬрд╛рд░реА рдХрд┐рдпрд╛ рдЧрдпрд╛ 1.3)ред
рдЗрди рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП, рдЙрдиреНрд╣реЗрдВ рдЙрдкрдпреБрдХреНрдд рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рд░рдЦреЗрдВред рдореИрдХ рдУрдПрд╕ рдкрд░, рдпрд╣ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:
/Users/username/Library/Application Support/Titanium/modules/
рдпрд╣рд╛рдБ рджреЛ рдлреЛрд▓реНрдбрд░ рд╣реИрдВ: android, iphoneред рд╕рдм рдХреБрдЫ рдмрд╣реБрдд рд╕рд░рд▓ рд╣реИ: рдЖрдкрдХреЛ рдЙрдирдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдореЗрдВ рд╕рдВрдмрдВрдзрд┐рдд рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЛ рдХреЙрдкреА рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
рдЗрд╕рдХреЗ рдмрд╛рдж, рдПрдХ рдирдпрд╛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдмрдирд╛рдПрдВред Tiapp.xml рдЦреЛрд▓реЗрдВ рдФрд░ рдЙрдкрдпреБрдХреНрдд рдХреЛрдб рдЬреЛрдбрд╝реЗрдВ:
<modules> <module platform="iphone" version="1.2">com.googlecode.quicktigame2d</module> <module platform="android" version="1.2">com.googlecode.quicktigame2d</module> </modules>
рдореИрдВ рдРрд╕реЗ рдЙрджрд╛рд╣рд░рдгреЛрдВ рд╕реЗ рдорд┐рд▓рд╛ рдЬрд╣рд╛рдБ рдЗрд╕реЗ рдЗрд╕ рддрд░рд╣ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рдерд╛:
<module version="1.2">com.googlecode.quicktigame2d</module>
рдореЗрд░реЗ рдЕрдиреБрднрд╡ рдореЗрдВ, рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХрд╛ рдпрд╣ рддрд░реАрдХрд╛ рдХрд╛рдо рдирд╣реАрдВ рдЖрдпрд╛ред
рдпрд╣реА рд╣реИ рдФрд░ рдЬрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд╣реИред рдЖрдЗрдП рдЙрди рдореВрд▓ рддрддреНрд╡реЛрдВ рдХреЛ рджреЗрдЦреЗрдВ рдЬреЛ рдЗрд╕ рдХрд╛рдо рдореЗрдВ рдЙрдкрдпреЛрдЧреА рд╣реИрдВред рдкрд╣рд▓рд╛ рдХрджрдо рдПрдХ "рд╡рд┐рдВрдбреЛ" рдмрдирд╛рдирд╛ рд╣реИ рдФрд░ QuickTiGame2d рдХреЛ рдХрдиреЗрдХреНрдЯ рдХрд░рдирд╛ рд╣реИ, рдлрд┐рд░ рдПрдХ рдЧреЗрдо рд╕реНрдХреНрд░реАрди рдмрдирд╛рдирд╛ рд╣реИред рд╕рднреА рдХреНрд░рдо рдореЗрдВ:
var window = Ti.UI.createWindow({ backgroundColor : 'black' }); var quicktigame2d = require('com.googlecode.quicktigame2d'); var game = quicktigame2d.createGameView();
рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рдЬреЗрдПрд╕ рдлрд╛рдЗрд▓реЗрдВ рдЗрд╕ рддрд░рд╣ рд╕реЗ рдЬреБрдбрд╝реА рд╣реИрдВ:
Ti.include('loadingScene.js');
рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдХрд╛рд░рдХ рдЦреЗрд▓ рдХреЗ рджреМрд░рд╛рди рд╕реНрдХреНрд░реАрди рдХрд╛ рд╕реНрдерд╛рди рд╣реИред рдЗрд╕ рд╕реНрдерд╛рди рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдкреНрд░рддреНрдпреЗрдХ рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдХреЛ рдЕрд▓рдЧ рд╕реЗ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП:
if (Titanium.Platform.osname === 'android') { game.orientation = Ti.UI.LANDSCAPE_LEFT; window.orientationModes = [Titanium.UI.LANDSCAPE_LEFT]; }else { game.orientation = Ti.UI.LANDSCAPE_RIGHT; window.orientationModes = [Titanium.UI.LANDSCAPE_RIGHT]; }
рдЖрдк рд╕реНрдХреНрд░реАрди рдХрд╛ рд░рдВрдЧ рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВ:
game.color(0, 0, 0);
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЗрд╕рдореЗрдВ рдЗрд╡реЗрдВрдЯ рд╣реИрдВрдбрд▓рд░ рдЬреЛрдбрд╝реЗрдВ:
game.addEventListener('onload', function(e) { ... LoadingScene.init(); game.pushScene(LoadingScene.scene); game.start(); });
рдЖрдЗрдП рдШрдЯрдирд╛ рдкрд░ рдШрдЯрдирд╛рдУрдВ рдХреЛ рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рджреЗрдЦреЗрдВред рдЖрдк рдореБрдЦреНрдп рд╣реИрдВрдбрд▓рд░ рдХреЛ рд╣рд╛рдЗрд▓рд╛рдЗрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреИрд╕реЗ:
this.scene.addEventListener('activated', activated); this.scene.addEventListener('deactivated', deactivated); this.scene.addEventListener('onloadsprite', onloadsprite);
рдЬрд╣рд╛рдБ рд╕рдХреНрд░рд┐рдп рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦреЗрдЧрд╛:
var activated = (function(self) { return function(e) { ... }; })(this);
рдореЗрд░реА рд░рд╛рдп рдореЗрдВ, рдХреЛрдб рдЦреБрдж рдХреЛ рд╕рдордЭрд╛рддрд╛ рд╣реИ: рд╣рдо рдЙрди рдШрдЯрдирд╛рдУрдВ рдХреЛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдЬреЛ рддрдм рд╣реЛрддреА рд╣реИрдВ рдЬрдм рджреГрд╢реНрдп рд╕рдХреНрд░рд┐рдп рд╣реЛрддрд╛ рд╣реИ, рдирд┐рд╖реНрдХреНрд░рд┐рдп рд╣реЛрддрд╛ рд╣реИ, рдФрд░ рдЬрдм рд▓реЛрдбрд┐рдВрдЧ рджреГрд╢реНрдп рдкрд░ рдЫрд┐рдбрд╝рдХрддрд╛ рд╣реИред
рдмрд╣реБрдд рдЙрдкрдпреЛрдЧреА рд╕реНрдХреНрд░реАрди рджреЛрд╣рди рдШрдЯрдирд╛рдПрдБ:
game.addEventListener('touchstart', touchstart); game.addEventListener('touchend', touchend);
рдЪрд▓рд┐рдП рдЬрд╛рд░реА рд░рдЦрддреЗ рд╣реИрдВред
рдордд рднреВрд▓реЛ рдХрд┐ рдЖрдкрдХреЛ рд╕рднреА рддрддреНрд╡реЛрдВ рдХреА рддрд░рд╣ рдПрдХ рдЧреЗрдо рд╕реНрдХреНрд░реАрди рдЬреЛрдбрд╝рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдФрд░ рдЧреЗрдо рд╡рд┐рдВрдбреЛ рднреА рдЦреЛрд▓реЗрдВ:
window.add(game); window.open({fullscreen:true, navBarHidden:true});
рдЖрдЗрдП рдордВрдЪ рдкрд░ рдЧреНрд░рд╛рдлрд┐рдХ рдФрд░ рдкрд╛рдареНрдп рд╕рд╛рдордЧреНрд░реА рдХреЗ рд╡рд┐рдЪрд╛рд░ рдкрд░ рдЖрдЧреЗ рдмрдврд╝рддреЗ рд╣реИрдВред
рд╢реБрд░реБрдЖрдд рдХреЗ рд▓рд┐рдП, рдПрдХ рдкрд╛рда рддрддреНрд╡ рдЬреЛрдбрд╝рдиреЗ рдХрд╛ рдПрдХ рд╕рд░рд▓ рдЙрджрд╛рд╣рд░рдг:
var scoreTextSprite = quicktigame2d.createTextSprite({ text : score, fontSize : 64 }); scoreTextSprite.color(1, 0, 0); scoreTextSprite.x = game.screen.width*0.4; self.scene.add(scoreTextSprite);
рдпрд╣рд╛рдВ рд╕реНрдкреНрд░рд╛рдЗрдЯ рдЯреЗрдХреНрд╕реНрдЯ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ, x рдЕрдХреНрд╖ рдХреЗ рд╕рд╛рде рдлрд╝реЙрдиреНрдЯ рдЖрдХрд╛рд░, рд░рдВрдЧ рдФрд░ рдЙрд╕рдХрд╛ рд╕реНрдерд╛рди рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
рдПрдХ рдЧреНрд░рд╛рдлрд┐рдХ рд╕реНрдкреНрд░рд╛рдЗрдЯ рдмрдирд╛рдирд╛ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИ:
var sprite = quicktigame2d.createSprite({image:'images/sprite.png'});
рдЖрдк рд╕реНрдкреНрд░рд╛рдЗрдЯ рдХреЗ рд╕рд╛рде рд╡рд┐рднрд┐рдиреНрди рдЬреЛрдбрд╝рддреЛрдбрд╝ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
1. рдЫрд┐рдкрд╛рдПрдБ рдФрд░ рджрд┐рдЦрд╛рдПрдБ
sprite.hide(); sprite.show();
2. рдШреБрдорд╛рдПрдБ
sprite.rotate(180);
3. рд╣рдЯреЛ
sprite.move(300, 500);
4. рдкреИрдорд╛рдиреЗ рдХреЛ рдмрджрд▓реЗрдВ (рджреЛрдиреЛрдВ рдПрдХ рд╕рд╛рде рджреЛ рдХреБрд▓реНрд╣рд╛рдбрд╝рд┐рдпреЛрдВ рдкрд░, рдФрд░ рдкреНрд░рддреНрдпреЗрдХ рдкрд░ рдЕрд▓рдЧ рд╕реЗ)
sprite.scale(5); sprite.scaleBy(2, 3);
рдПрдХ рджреВрд╕рд░реЗ рдХреЗ рдКрдкрд░ рд╕реНрдкреНрд░рд╛рдЗрдЯ рдХреА рд╡реНрдпрд╡рд╕реНрдерд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдПрдХ рд╡рд┐рд╢реЗрд╖ рдореВрд▓реНрдп z = 0..99 рд╣реИ:
sprite.z = 1; newSprite.z = 2;
рдЦреИрд░, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдПрдХ рд╢реБрд░реБрдЖрдд рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реЛрдЧрд╛ред рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдпрд╣ рд▓реЗрдЦ рдХреНрд░реЙрд╕-рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдЧреЗрдо рдХреЗ рд╡рд┐рдХрд╛рд╕ рдХреЗ рд▓рд┐рдП рдЙрддреНрд╕рд╛рд╣ рдХреЛ рдЬрд╛рдЧреГрдд рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЗрди рдкреНрд░рдпрд╛рд╕реЛрдВ рдореЗрдВ рдорджрдж рдХрд░рддрд╛ рд╣реИред рдЗрд╕ рд╕реНрддрд░ рдкрд░, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЕрднреА рднреА рдПрдХ рдЦреЗрд▓ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдЕрдЧрд▓реЗ рд▓реЗрдЦ рдореЗрдВ рд╣рдо рдЗрд╕рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░реЗрдВрдЧреЗред