1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/resources/scenebegin.lua Thu Aug 22 19:50:12 2013 +0200 1.3 @@ -0,0 +1,472 @@ 1.4 +-- Initiate scene management 1.5 +local sceneloc = director:createScene() 1.6 +sceneloc.name = 'Scene: Begin' 1.7 + 1.8 +-- Calculate constants 1.9 +local dsw = director.displayWidth 1.10 +local dsh = director.displayHeight 1.11 +local dmw = director.displayCenterX 1.12 +local dmh = director.displayCenterY 1.13 +local nFoodpoints = 2 1.14 +local nAsterpoints = -2 1.15 +local nCometpoints = -1 1.16 + 1.17 +-- Initialize common variables 1.18 +local spriteNull = director:createSprite(0, 0) 1.19 +local timerHero = director:createNode() 1.20 +local labReady = director:createNode() 1.21 +local nHealth = 0 1.22 +local tweenOut = 0 1.23 + 1.24 +-- Instantiate common fonts 1.25 +local fontSegoe = director:createFont('fonts/SegoeUI-64pt_bold.fnt') 1.26 +local fontArial = director:createFont('fonts/Arial-96pt_bold.fnt') 1.27 +--local fontFxsys = director:createFont('fonts/Fixedsys-96pt_norm.fnt') 1.28 + 1.29 +-- Prepare math runtime 1.30 +math.randomseed(os.time()) 1.31 +math.random(); math.random(); math.random(); math.random() 1.32 + 1.33 +function sceneloc:setUp(event) 1.34 + -- Create sprite, bottom left of image is at bottom left of display 1.35 + --local spriteGalaxy = director:createSprite(0, 0, 'textures/galaxyback_720.png') 1.36 + local spriteGalaxy = director:createSprite(0, 0, 'textures/galaxyback_360.png') 1.37 + spriteGalaxy.xScale = 2 -- Needed due to small maximum sprite size 1.38 + spriteGalaxy.yScale = 2 -- Needed due to small maximum sprite size 1.39 + 1.40 + -- Animate the image to scroll along the X axis over 2 minutes 1.41 + funcyScroll = function(spriteIn) 1.42 + if spriteIn.xFlip == false then 1.43 + spriteIn.xFlip = true 1.44 + else 1.45 + spriteIn.xFlip = false 1.46 + end 1.47 + 1.48 + spriteIn.x = spriteIn.x + dsh 1.49 + end 1.50 + 1.51 + funcyGalstart = function(spriteIn) 1.52 + --tween:cancel(tweenReady) 1.53 + tweenReadweg = tween:dissolve(labReady, spriteNull, .5, 0) 1.54 + labReady = '' 1.55 + end 1.56 + --tween:to(spriteGalaxy, {delay=5, time=120, x=dsw-spriteGalaxy.w, mode='repeat', onComplete=funcyScroll}) 1.57 + local tweenBack = tween:to(spriteGalaxy, {delay=5, time=100, mode='repeat', x=dsw-spriteGalaxy.w*2, onStart=funcyGalstart}) -- *2 for xyScale (above) 1.58 + 1.59 + -- Instantiate star field particles behind hero 1.60 + local partiStarfar = director:createParticles('particles/stars.plist') 1.61 + partiStarfar.sourcePos = {dsw, dmh} 1.62 + 1.63 + -- Create hero, middle of left edge of screen 1.64 + local atlasHero = director:createAtlas({ 1.65 + width = 300, 1.66 + height = 200, 1.67 + numFrames = 8, 1.68 + textureName = 'textures/heroatlas.png', 1.69 + }) 1.70 + 1.71 + local animHero = director:createAnimation({ 1.72 + start = 1, 1.73 + count = 8, 1.74 + atlas = atlasHero, 1.75 + delay = 1/8, 1.76 + }) 1.77 + 1.78 + local spriteHero = director:createSprite({ 1.79 + name='hero', x=dsw/8, y=dmh, 1.80 + xAnchor=0.5, yAnchor=0.5, 1.81 + source=animHero, 1.82 + }) 1.83 + 1.84 + -- Instantiate star field particles in front of hero 1.85 + local partiStarnear = director:createParticles('particles/stars.plist') 1.86 + partiStarnear.sourcePos = {dsw, dmh} 1.87 + 1.88 + -- Instantiate good things, like cheese 1.89 + funcyFood = function(spriteIn) 1.90 + --tween:cancel(tweenOut) 1.91 + --spriteIn.tweens[1].delay = math.random(0, 5) 1.92 + spriteIn.y = math.random(dsh/16, dsh-dsh/16) 1.93 + spriteIn.isVisible = true 1.94 + end 1.95 + local spriteCattin = director:createSprite(dsw, dmh, 'textures/cattin.png') 1.96 + local tweenCattin = tween:to(spriteCattin, {delay=math.random(1, 10), time=12, mode='repeat', x=-dsw, onComplete=funcyFood}) 1.97 + spriteCattin.name = 'food' 1.98 + spriteCattin.xAnchor = 0 1.99 + spriteCattin.yAnchor = 0 1.100 + spriteCattin.xScale = .5 1.101 + spriteCattin.yScale = .5 1.102 + local spriteCheese = director:createSprite(dsw, dmh, 'textures/cheesepiece.png') 1.103 + local tweenCheese = tween:to(spriteCheese, {delay=math.random(1, 10), time=16, mode='repeat', x=-dsw, onComplete=funcyFood, xAnchor=0, yAnchor=0}) 1.104 + spriteCheese.name = 'food' 1.105 + spriteCheese.xAnchor = 0 1.106 + spriteCheese.yAnchor = 0 1.107 + spriteCheese.xScale = .8 1.108 + spriteCheese.yScale = .8 1.109 + local spriteFischkopf = director:createSprite(dsw, dmh, 'textures/fischkopfe.png') 1.110 + local tweenFischkopf = tween:to(spriteFischkopf, {delay=math.random(1, 10), time=8, mode='repeat', x=-dsw, onComplete=funcyFood}) 1.111 + spriteFischkopf.name = 'food' 1.112 + spriteFischkopf.xAnchor = 0 1.113 + spriteFischkopf.yAnchor = 0 1.114 + spriteFischkopf.xScale = .325 1.115 + spriteFischkopf.yScale = .325 1.116 + 1.117 + -- Instantiate comets and other dangerous particles 1.118 + funcyStartdang = function(spriteIn) 1.119 + -- Adjust delay to spread out danger objects 1.120 + --spriteIn. 1.121 + end 1.122 + funcyComets = function(spriteIn) 1.123 + local locVert = math.random(dsh/16, dsh-dsh/16) 1.124 + spriteIn.tweens.delay = math.random(1, 10) 1.125 + spriteIn.y = locVert 1.126 + end 1.127 + funcyGalies = function(spriteIn) 1.128 + local locVert = math.random(dsh/16, dsh-dsh/16) 1.129 + spriteIn.tweens.delay = math.random(1, 10) 1.130 + spriteIn.y = locVert 1.131 + end 1.132 + 1.133 + local posComety = math.random(dsh/16, dsh-dsh/16) 1.134 + local timComety = math.random(5, 12) 1.135 + local posGalaxy = math.random(dsh/16, dsh-dsh/16) 1.136 + local timGalaxy = math.random(5, 12) 1.137 + 1.138 + -- Overlays needed for collision detection (particles arent detected) 1.139 + local spriteCom = director:createSprite({name='comet', x=dsw+dsw/4, y=posComety}) 1.140 + spriteCom.name = 'comet' 1.141 + local tweenCom = tween:to(spriteCom, {delay=timComety, time=13, x=-dsw-dsw/4, mode='repeat', onStart=funcyStartdang, onComplete=funcyComets}) 1.142 + local spriteGal = director:createSprite(dsw+dsw/4, posGalaxy) 1.143 + spriteGal.name = 'comet' 1.144 + local tweenGal = tween:to(spriteGal, {delay=timGalaxy, time=11, x=-dsw-dsw/4, mode='repeat', onStart=funcyStartdang, onComplete=funcyGalies}) 1.145 + 1.146 + local partiComet = director:createParticles('particles/comets.plist') 1.147 + --partiComet.name = 'comet' 1.148 + --partiComet.sourcePos = {dsw+dsw/4, posComety} 1.149 + --partiComet.sourcePos = {0, 60} 1.150 + --tween:to(partiComet, {delay=timComety, time=11, x=-dsw-dsw/4, mode='repeat', onStart=funcyStartdang, onComplete=funcyComets}) 1.151 + local partiGalax = director:createParticles('particles/galaxies.plist') 1.152 + --partiGalax.name = 'comet' 1.153 + --partiGalax.sourcePos = {dsw+dsw/4, posGalaxy} 1.154 + --partiGalax.sourcePos = {0, 40} 1.155 + --tween:to(partiGalax, {delay=timGalaxy, time=9, x=-dsw-dsw/4, mode='repeat', onStart=funcyStartdang, onComplete=funcyGalies}) 1.156 + spriteCom:addChild(partiComet) 1.157 + spriteGal:addChild(partiGalax) 1.158 + 1.159 + -- Start audio streams 1.160 + audio:loadStream('sounds/dream.mp3') 1.161 + audio:playStream('sounds/dream.mp3', true) 1.162 + 1.163 + -- Instantiate motor smoke particles 1.164 + -- Create from an initialiser list 1.165 + local partiSmoke = director:createParticles({ 1.166 + totalParticles=1500, 1.167 + source='particles/fire.png', 1.168 + emitterMode=particles.modeGravity, emitterRate=1500/3.5, 1.169 + --sourcePos={dsw/8, dmh}, 1.170 + sourcePos={spriteHero.w/6, spriteHero.h/2}, 1.171 + sourcePosVar={0, 16}, 1.172 + duration=particles.durationInfinity, 1.173 + 1.174 + modeGravity={ 1.175 + --gravity={-90, 0}, 1.176 + speed=180, speedVar=50, 1.177 + radialAccel=0, radialAccelVar=0, 1.178 + --tangentialAccel=0, tangentialAccelVar=40, 1.179 + }, 1.180 + 1.181 + --angle=90, angleVar=20, 1.182 + angle=180, angleVar=10, 1.183 + life=4, lifeVar=2, 1.184 + 1.185 + --startColor={0x80, 0x80, 0x80, 0xff}, startColorVar={0x80, 0x80, 0x80, 25}, 1.186 + --endColor={25, 25, 25, 50}, endColorVar={25, 25, 25, 50}, 1.187 + startColor=color.white, endColor=color.black, 1.188 + 1.189 + startSize=24.0, startSizeVar=2.0, 1.190 + endSize=particles.startSizeEqualToEndSize 1.191 + }) 1.192 + partiSmoke:stop() 1.193 + spriteHero:addChild(partiSmoke) 1.194 + 1.195 + ---- Instantiate asteroids 1.196 + funcyAster = function(spriteIn) 1.197 + spriteIn:rotate(30) 1.198 + spriteIn.y = math.random(dsh/16, dsh-dsh/16) 1.199 + end 1.200 + local spriteAster1 = director:createSprite(dsw, dmh, 'textures/asteroid1.png') 1.201 + local tweenAster1 = tween:to(spriteAster1, {delay=math.random(5, 12), time=8, mode='repeat', x=-dsw, onComplete=funcyAster}) 1.202 + spriteAster1.name = 'aster' 1.203 + spriteAster1.xAnchor = 0 1.204 + spriteAster1.yAnchor = 0 1.205 + spriteAster1.xScale = .25 1.206 + spriteAster1.yScale = .25 1.207 + local spriteAster2 = director:createSprite(dsw, dmh, 'textures/asteroid2.png') 1.208 + local tweenAster2 = tween:to(spriteAster2, {delay=math.random(5, 12), time=10, mode='repeat', x=-dsw, onComplete=funcyAster}) 1.209 + spriteAster2.name = 'aster' 1.210 + spriteAster2.xAnchor = 0 1.211 + spriteAster2.yAnchor = 0 1.212 + spriteAster2.xScale = .25 1.213 + spriteAster2.yScale = .25 1.214 + 1.215 + -- Instantiate explanation text 1.216 + labReady = director:createLabel({ 1.217 + hAlignment='centre', 1.218 + vAlignment='middle', 1.219 + --font=fontFxsys, 1.220 + font=fontArial, 1.221 + text='Ready!', 1.222 + color=color.white, 1.223 + alpha=0}) 1.224 + local tweenReady = tween:to(labReady, {time=.5, easing=ease.powIn, textXScale=2, textYScale=2, alpha=1}) 1.225 + 1.226 + -- Initialize physics simulation 1.227 + physics:setGravity(0, 0) 1.228 + local ptRndbox = {100,50, 260,50, 290,80, 290,120, 260,150, 80,150} 1.229 + physics:addNode(spriteHero, {isSensor = true, shape=ptRndbox}) 1.230 + physics:addNode(spriteCattin, {isSensor = true}) 1.231 + physics:addNode(spriteCheese, {isSensor = true}) 1.232 + physics:addNode(spriteFischkopf, {isSensor = true}) 1.233 + --physics:addNode(partiComet, {isSensor = true}) 1.234 + --physics:addNode(partiGalax, {isSensor = true}) 1.235 + local ptTri = {-45,0, 75,-90, 75,90} 1.236 + local ptSmal = {-30,0, 100,-20, 100,40} 1.237 + physics:addNode(spriteCom, {isSensor = true, shape=ptTri}) 1.238 + physics:addNode(spriteGal, {isSensor = true, shape=ptSmal}) 1.239 + physics:addNode(spriteAster1, {isSensor = true}) -- Set in tween instead 1.240 + physics:addNode(spriteAster2, {isSensor = true}) -- Set in tween instead 1.241 + --spriteCom.physics.radius = 50 1.242 + --spriteGal.physics.radius = 50 1.243 + -- Marmalade bug if radius is different than actual perfectly round object image 1.244 + spriteAster1.physics.radius = spriteAster1.w/2 1.245 + spriteAster2.physics.radius = spriteAster2.w/2 1.246 + --physics.debugDraw = true 1.247 + 1.248 + -- Implement collision listener 1.249 + function hit(event) 1.250 + if event.phase == 'began' then 1.251 + --local labHit = director:createLabel({x=event.nodeA.x, y=event.nodeA.y, text=event.nodeB.name, font=fontSegoe, color=color.white}) 1.252 + if event.nodeA.name == 'food' then 1.253 + --tween:cancel(event.nodeA.tweens[1]) 1.254 + --tweenOut = tween:dissolve(event.nodeA, spriteNull, 1, 0) 1.255 + --table.insert(event.nodeA.tweens, tween:dissolve(event.nodeA, spriteNull, 1, 0)) 1.256 + --event.nodeA.x = math.random(dsw/16, dsw-dsw/16) 1.257 + --event.nodeA.y = math.random(dsh/16, dsh-dsh/16) 1.258 + event.nodeA.isVisible = false 1.259 + audio:playSound('sounds/belch.pcm') 1.260 + nHealth = nHealth + nFoodPoints 1.261 + local labPoints = director:createLabel({ 1.262 + x=0, y=0, 1.263 + hAlignment='centre', 1.264 + vAlignment='middle', 1.265 + textXScale=.5, 1.266 + textYScale=.5, 1.267 + --font=fontFxsys, 1.268 + font=fontArial, 1.269 + text='+' .. nFoodpoints, 1.270 + color=color.white, 1.271 + alpha=1}) 1.272 + local tweenPoints = tween:to(labPoints, {time=1, easing=ease.powIn, textXScale=15, textYScale=15, alpha=0}) 1.273 + elseif event.nodeB.name == 'food' then 1.274 + event.nodeB.isVisible = false 1.275 + audio:playSound('sounds/belch.pcm') 1.276 + nHealth = nHealth + nFoodpoints 1.277 + local labPoints = director:createLabel({ 1.278 + x=0, y=0, 1.279 + hAlignment='centre', 1.280 + vAlignment='middle', 1.281 + textXScale=.5, 1.282 + textYScale=.5, 1.283 + --font=fontFxsys, 1.284 + font=fontArial, 1.285 + text='+' .. nFoodpoints, 1.286 + color=color.white, 1.287 + alpha=1}) 1.288 + 1.289 + local tweenPoints = tween:to(labPoints, {time=1, easing=ease.powIn, textXScale=15, textYScale=15, alpha=0}) 1.290 + elseif event.nodeA.name == 'aster' then 1.291 + local diffiX = event.nodeB.x - event.nodeA.x 1.292 + local diffiY = event.nodeB.y - event.nodeA.y 1.293 + tween:cancel(event.nodeB.tweens[1]) 1.294 + --tween:to(spriteHero, {time=0.5, easing=ease.powOut, easingValue=5, x=event.nodeB.x-diffiX*2, y=event.nodeB.y-diffiY*2}) 1.295 + tween:to(spriteHero, {time=1, easing=ease.powOut, easingValue=5, x=spriteHero.x-dsw/16, y=spriteHero.y}) 1.296 + --if device:isVibrationAvailable() then 1.297 + -- device:vibrate(100) 1.298 + --end 1.299 + audio:playSound('sounds/ouch.pcm') 1.300 + nHealth = nHealth + nAsterpoints 1.301 + elseif event.nodeB.name == 'aster' then 1.302 + tween:cancel(event.nodeA.tweens[1]) 1.303 + tween:to(spriteHero, {time=1, easing=ease.powOut, easingValue=5, x=spriteHero.x-dsw/16, y=spriteHero.y}) 1.304 + --if device:isVibrationAvailable() then 1.305 + -- device:vibrate(100) 1.306 + --end 1.307 + audio:playSound('sounds/ouch.pcm') 1.308 + nHealth = nHealth + nAsterpoints 1.309 + elseif event.nodeA.name == 'comet' then 1.310 + --if device:isVibrationAvailable() then 1.311 + -- device:vibrate(800) 1.312 + --end 1.313 + audio:playSound('sounds/torche.pcm') 1.314 + nHealth = nHealth + nCometpoints 1.315 + elseif event.nodeB.name == 'comet' then 1.316 + --if device:isVibrationAvailable() then 1.317 + -- device:vibrate(800) 1.318 + --end 1.319 + audio:playSound('sounds/torche.pcm') 1.320 + nHealth = nHealth + nCometpoints 1.321 + end 1.322 + end 1.323 + return true 1.324 + end 1.325 + spriteHero:addEventListener('collision', hit) 1.326 + 1.327 + -- Implement event handlers 1.328 + -- General screen touch move events 1.329 + --Marmalade bugs cause audio to fail! 1.330 + function moveStart(event) 1.331 + --if not partiSmoke:isActive() then 1.332 + partiSmoke:reset() 1.333 + --end 1.334 + --local audiMotor = audio:playSound('sounds/motor.pcm') -- distracting 1.335 + end 1.336 + function moveStop(event) 1.337 + partiSmoke:stop() 1.338 + audio:stopSound(audiMotor) 1.339 + end 1.340 + function touch(event) 1.341 + if event.phase=='began' then 1.342 + --also: powIn, expIn, sineIn, elasticIn, bounceIn, backIn 1.343 + tween:to(spriteHero, {time=1, easing=ease.powOut, easingValue=2, x=event.x, y=event.y, onStart=moveStart, onComplete=moveStop}) 1.344 + elseif event.phase=='ended' then 1.345 + -- Noop 1.346 + --dbg.print('Noop') 1.347 + --system:sendEvent('stopMotor', {timeIn=2, sizeFart=5}) 1.348 + elseif event.phase=='moved' then 1.349 + tween:to(spriteHero, {time=1, easing=ease.powOut, easingValue=2, x=event.x, y=event.y, onStart=moveStart, onComplete=moveStop}) 1.350 + end 1.351 + end 1.352 + system:addEventListener('touch', touch) 1.353 + 1.354 + -- Start health timers and label appropriately 1.355 + nHealth = 90 -- A minute and a half of life 1.356 + local labHealth = director:createLabel({ 1.357 + x=-fontArial.height*1.75, y=fontArial.height/4, 1.358 + hAlignment='right', 1.359 + vAlignment='bottom', 1.360 + font=fontArial, 1.361 + text='Health', 1.362 + color=color.white, 1.363 + alpha=.375 1.364 + }) 1.365 + local labDeath = director:createLabel({ 1.366 + x=-fontArial.height/2, y=fontArial.height/4, 1.367 + hAlignment='right', 1.368 + vAlignment='bottom', 1.369 + font=fontArial, 1.370 + text=nHealth, 1.371 + color=color.white, 1.372 + alpha=.375 1.373 + }) 1.374 + 1.375 + funcyHealth = function(event) 1.376 + thisNode = event.target 1.377 + --timerObject = event.timer 1.378 + --iterationsLeft = event.doneIterations 1.379 + --thisNode.health = thisNode.health - 1 1.380 + nHealth = nHealth - 1 1.381 + labDeath.text = nHealth 1.382 + 1.383 + -- Is the game over? 1.384 + if nHealth <= 0 then 1.385 + timerHero:cancel() 1.386 + --audio:stopStream() 1.387 + --tween:cancel(tweenBack) 1.388 + tween:cancel(tweenCattin) 1.389 + tween:cancel(tweenCheese) 1.390 + tween:cancel(tweenFischkopf) 1.391 + tween:cancel(tweenCom) 1.392 + tween:cancel(tweenGal) 1.393 + tween:cancel(tweenAster1) 1.394 + tween:cancel(tweenAster2) 1.395 + system:removeEventListener('touch', touch) 1.396 + 1.397 + local rectGover = director:createRectangle({ 1.398 + x=0, y=0, 1.399 + w=dsw, h=dsh, 1.400 + strokeWidth=0, 1.401 + color=color.black, 1.402 + alpha=0}) 1.403 + local labGover = director:createLabel({ 1.404 + --x=0, y=fontArial.height, 1.405 + hAlignment='centre', 1.406 + vAlignment='middle', 1.407 + --font=fontFxsys, 1.408 + font=fontArial, 1.409 + text='GAME OVER', 1.410 + color=color.white, 1.411 + alpha=0}) 1.412 + 1.413 + --powIn, expIn, sineIn, elasticIn, bounceIn, backIn, easingValue 1.414 + local tweenGvback = tween:to(rectGover, {time=2, alpha=.6}) 1.415 + local tweenGvtext = tween:to(labGover, {time=3, easing=ease.expIn, easingValue=3, textXScale=2, textYScale=2, alpha=1}) 1.416 + local tweenGvlast = tween:to(labGover, {delay=3, time=1.5, mode='mirror', easing=ease.backOut, textXScale=2.125, textYScale=2.125}) 1.417 + 1.418 + -- Not ready for prime time (must implement back stack noch) 1.419 + ---- Instantiate replay and back buttons 1.420 + --local butPlay = director:createSprite({xAnchor=1, source='images/butplay.png', alpha=0}) 1.421 + --butPlay.x = dmw - butPlay.w/12 1.422 + --butPlay.y = dmh - butPlay.h 1.423 + --local butBack = director:createSprite({source='images/butback2.png', alpha=0}) 1.424 + --butBack.x = dmw + butBack.w/12 1.425 + --butBack.y = dmh - butBack.h 1.426 + --tweenButplayin = tween:to(butPlay, {delay=4.0, time=1, alpha=1}) 1.427 + --tweenButbackin = tween:to(butBack, {delay=4.5, time=1, alpha=1}) 1.428 + --function butPlay:touch(event) 1.429 + -- if event.phase == 'began' then 1.430 + -- director:moveToScene(sceneBegin, transoptr) 1.431 + -- end 1.432 + -- return true 1.433 + --end 1.434 + --butPlay:addEventListener('touch', butPlay) 1.435 + --function butBack:touch(event) 1.436 + -- if event.phase == 'began' then 1.437 + -- director:moveToScene(sceneIntro, transoptr) 1.438 + -- end 1.439 + -- return true 1.440 + --end 1.441 + --butBack:addEventListener('touch', butBack) 1.442 + end 1.443 + end 1.444 + --timerHealth = system:addTimer(funcyHealth, 1, 0, 4) 1.445 + timerHero = spriteHero:addTimer(funcyHealth, 1, 0, 4) 1.446 +end 1.447 + 1.448 +function sceneloc:tearDown(event) 1.449 + dbg.print('sceneloc:tearDown') 1.450 + audio:stopStream() 1.451 + --self.releaseResources() 1.452 + --self.<obj-here> = self.<obj-here>:removeFromParent() 1.453 + --self.obj0:removeFromParent() 1.454 + --self.obj1:removeFromParent() 1.455 + --self.obj0 = nil 1.456 + --self.obj1 = nil 1.457 +end 1.458 +function sceneloc:enterPreTransition(event) 1.459 + dbg.print('sceneloc:enterPreTransition') 1.460 +end 1.461 +function sceneloc:enterPostTransition(event) 1.462 + dbg.print('sceneloc:enterPostTransition') 1.463 +end 1.464 +function sceneloc:exitPreTransition(event) 1.465 + dbg.print('sceneloc:exitPreTransition') 1.466 +end 1.467 +function sceneloc:exitPostTransition(event) 1.468 + dbg.print('sceneloc:exitPostTransition') 1.469 +end 1.470 + 1.471 +sceneloc:addEventListener({'setUp', 'tearDown', 'enterPreTransition', 1.472 + 'enterPostTransition', 'exitPreTransition', 'exitPostTransition'}, sceneloc) 1.473 + 1.474 +return sceneloc 1.475 +