2013-06-29 3 views
0

Я создал меню с 2 кнопками, и я использую API-интерфейс раскадровки, чтобы перемещаться по сцене, но он работает только для первой кнопки, для другой кнопки он дает черный экран, я положительный нет ничего плохого в SCENE 2, потому что я попытался установить обе сцены (SCENE 1 и SCENE 2) того же кода, и он работал с SCENE 1, но все же дает черное изображение для SCENE 2, вот мой код меню, надеюсь, вы можете исправить ошибку:Corona раскадровка дает черное изображение

local storyboard = require ("storyboard") 
local scene = storyboard.newScene() 


    function scene:createScene(event) 

local screenGroup = self.view 

background = display.newImage("start.png") 
background:setReferencePoint(display.BottomLeftReferencePoint) 
background.x = 0 
background.y = 320 
background.speed = 1 
screenGroup:insert(background) 

city2 = display.newImage("city2.png") 
city2:setReferencePoint(display.BottomLeftReferencePoint) 
city2.x = 0 
city2.y = 320 
screenGroup:insert(city2) 



play = display.newImage("play.png") 
play.x = 242 
play.y = 161 
screenGroup:insert(play) 

controls = display.newImage("controls.png") 
controls.x = 144 
controls.y = 201 
screenGroup:insert(controls) 



function SCENE1(event) 
if event.phase == "began" then 
    storyboard.gotoScene("SCENE1", "fade", 400) 
end 
end 

function SCENE2(event) 
if event.phase == "began" then 
    storyboard.gotoScene("SCENE2", "fade", 400) 
end 
end 

function scene:enterScene(event) 

play:addEventListener("touch", SCENE1) 
controls:addEventListener("touch", SCENE2) 
end 



function scene:exitScene(event) 
play:removeEventListener("touch", SCENE1) 
controls:removeEventListener("touch", SCENE2) 
end 

function scene:destroyScene(event) 

end 

scene:addEventListener("createScene", scene) 
scene:addEventListener("enterScene", scene) 
scene:addEventListener("exitScene", scene) 
scene:addEventListener("destroyScene", scene) 

return scene 

ДЛЯ СЦЕНЫ 2:

module(..., package.seeall) 

    -- requires 

    local physics = require "physics" 
    physics.start() 

    require "sprite" 

    score = require ("score") 

    local storyboard = require ("storyboard") 
    local scene = storyboard.newScene() 
    -- background 

    function scene:createScene(event) 

local screenGroup = self.view 

background = display.newImage("bg.png") 
screenGroup:insert(background) 

scoreInfo = score.getInfo() 
score.init({ 
x = 40, 
y = 5} 
) 
score.setScore(0) 

ceiling = display.newImage("invisibleTile.png") 
ceiling:setReferencePoint(display.BottomLeftReferencePoint) 
ceiling.x = 0 
ceiling.y = 0 
physics.addBody(ceiling, "static", {density=.1, bounce=0.1, friction=.2}) 
screenGroup:insert(ceiling) 

theFloor = display.newImage("invisibleTile.png") 
theFloor:setReferencePoint(display.BottomLeftReferencePoint) 
theFloor.x = 0 
theFloor.y = 340 
physics.addBody(theFloor, "static", {density=.1, bounce=0.1, friction=.2}) 
screenGroup:insert(theFloor) 


city1 = display.newImage("city1.png") 
city1:setReferencePoint(display.BottomLeftReferencePoint) 
city1.x = 0 
city1.y = 320 
city1.speed = 1 
screenGroup:insert(city1) 

city2 = display.newImage("city1.png") 
city2:setReferencePoint(display.BottomLeftReferencePoint) 
city2.x = 480 
city2.y = 320 
city2.speed = 1 
screenGroup:insert(city2) 

city3 = display.newImage("city2.png") 
city3:setReferencePoint(display.BottomLeftReferencePoint) 
city3.x = 0 
city3.y = 320 
city3.speed = 2 
screenGroup:insert(city3) 

city4 = display.newImage("city2.png") 
city4:setReferencePoint(display.BottomLeftReferencePoint) 
city4.x = 480 
city4.y = 320 
city4.speed = 2 
screenGroup:insert(city4) 


jetSpriteSheet = sprite.newSpriteSheet("jet.png", 50, 17) 
jetSprites = sprite.newSpriteSet(jetSpriteSheet, 1, 4) 
sprite.add(jetSprites, "jets", 1, 4, 1000, 0) 
jet = sprite.newSprite(jetSprites) 
jet.x = -80 
jet.y = 100 
jet:prepare("jets") 
jet:play() 
jet.collided = false 
physics.addBody(jet, "static", {density=.1, bounce=0.1, friction=.2, radius=12}) 
screenGroup:insert(jet) 
jetIntro = transition.to(jet,{time=2000, x=100, onComplete=jetReady}) 

explosionSpriteSheet = sprite.newSpriteSheet("explosion.png", 24, 23) 
explosionSprites = sprite.newSpriteSet(explosionSpriteSheet, 1, 8) 
sprite.add(explosionSprites, "explosions", 1, 8, 2000, 1) 
explosion = sprite.newSprite(explosionSprites) 
explosion.x = 100 
explosion.y = 100 
explosion:prepare("explosions") 
-- explosion:play() 
explosion.isVisible = false 
-- physics.addBody(jet, "dynamic", {density=.1, bounce=0.1, friction=.2, radius=12}) 
screenGroup:insert(explosion) 

mine1 = display.newImage("mine.png") 
mine1.x = math.random(480,500) 
mine1.y = math.random(1,100) 
mine1.speed = math.random(2,6) 
mine1.initY = mine1.y 
mine1.amp = math.random(20,90) 
mine1.angle = math.random(1,360) 
physics.addBody(mine1, "static", {density=.1, bounce=0.1, friction=.2, radius=12}) 
screenGroup:insert(mine1) 

mine2 = display.newImage("mine.png") 
mine2.x = math.random(900,950) 
mine2.y = math.random(1,100) 
mine2.speed = math.random(2,6) 
mine2.initY = mine2.y 
mine2.amp = math.random(20,100) 
mine2.angle = math.random(1,360) 
physics.addBody(mine2, "static", {density=.1, bounce=0.1, friction=.2, radius=12}) 
screenGroup:insert(mine2) 


mine3 = display.newImage("mine.png") 
mine3.x = math.random(1450,1570) 
mine3.y = math.random(300,340) 
mine3.speed = math.random(2,6) 
mine3.initY = mine3.y 
mine3.amp = math.random(20,70) 
mine3.angle = math.random(1,360) 
physics.addBody(mine3, "static", {density=.1, bounce=0.1, friction=.2, radius=12}) 
screenGroup:insert(mine3) 

mine4 = display.newImage("mine.png") 
mine4.x = math.random(2500,2770) 
mine4.y = math.random(330,330) 
mine4.speed = math.random(2,6) 
mine4.initY = mine3.y 
mine4.amp = math.random(20,100) 
mine4.angle = math.random(1,360) 
physics.addBody(mine4, "static", {density=.1, bounce=0.1, friction=.2, radius=12}) 
screenGroup:insert(mine4) 

mine6 = display.newImage("mine.png") 
mine6.x = math.random(4000,4770) 
mine6.y = math.random(1,320) 
mine6.speed = math.random(2,6) 
mine6.initY = mine6.y 
mine6.amp = math.random(20,80) 
mine6.angle = math.random(1,360) 
physics.addBody(mine6, "static", {density=.1, bounce=0.1, friction=.2, radius=12}) 
screenGroup:insert(mine6) 

mine5 = display.newImage("mine.png") 
mine5.x = math.random(5500,5770) 
mine5.y = math.random(1,130) 
mine5.speed = math.random(2,6) 
mine5.initY = mine5.y 
mine5.amp = math.random(20,80) 
mine5.angle = math.random(1,360) 
physics.addBody(mine5, "static", {density=.1, bounce=0.1, friction=.2, radius=12}) 
screenGroup:insert(mine5) 
end 

function scrollCity(self,event) 
if self.x < -477 then 
    self.x = 480 
else 
    self.x = self.x - self.speed 
end 
end 

    function moveMines(self,event) 
if self.x < -50 then 
    self.x = 500 
    self.y = math.random(90,220) 
    self.speed = math.random(2,6) 
    self.amp = math.random(20,100) 
    self.angle = math.random(1,360) 
else 
    self.x = self.x - self.speed 
    self.angle = self.angle + .1 
    self.y = self.amp*math.sin(self.angle)+self.initY 
end 
end 

function addtoit (event) 
if event.phase == "ended" then 
score.setScore (score.getScore()+1) 
end 
end 


function jetReady() 
jet.bodyType = "dynamic" 
end 

function activateJets(self,event) 
self:applyForce(0, -1.5, self.x, self.y) 
print("run") 
end 

function touchScreen(event) 
print("touch") 
if event.phase == "began" then 
jet.enterFrame = activateJets 
    Runtime:addEventListener("enterFrame", jet) 
end 

if event.phase == "ended" then 
Runtime:removeEventListener("enterFrame", jet) 
    end 

end 

function gameOver() 
storyboard.gotoScene("restart", "fade", 400) 
end 

function explode() 

explosion.x = jet.x 
explosion.y = jet.y 
explosion.isVisible = true 
explosion:play() 
jet.isVisible = false 
timer.performWithDelay(3000, gameOver, 1) 

end 
local taSound = audio.loadSound("GAME.mp3") 
local tapSound = audio.loadSound("explosion-01.wav") 
function onCollision(event) 
if event.phase == "began" then 
    if jet.collided == false then 
    jet.collided = true 
    jet.bodyType = "static" 
    explode() 
    audio.stop() 
    audio.play(tapSound ,{ duration=3100 }) 
    background:removeEventListener("touch", addtoit) 
    end 
end 
end 


function scene:enterScene(event) 


storyboard.purgeScene("start") 
storyboard.purgeScene("restart") 

Runtime:addEventListener("touch", touchScreen) 

city1.enterFrame = scrollCity 
Runtime:addEventListener("enterFrame", city1) 

city2.enterFrame = scrollCity 
Runtime:addEventListener("enterFrame", city2) 

city3.enterFrame = scrollCity 
Runtime:addEventListener("enterFrame", city3) 

city4.enterFrame = scrollCity 
Runtime:addEventListener("enterFrame", city4) 

mine1.enterFrame = moveMines 
Runtime:addEventListener("enterFrame", mine1) 

mine2.enterFrame = moveMines 
Runtime:addEventListener("enterFrame", mine2) 

mine3.enterFrame = moveMines 
Runtime:addEventListener("enterFrame", mine3) 

mine4.enterFrame = moveMines 
Runtime:addEventListener("enterFrame", mine4) 

mine5.enterFrame = moveMines 
Runtime:addEventListener("enterFrame", mine5) 

mine6.enterFrame = moveMines 
Runtime:addEventListener("enterFrame", mine6) 

Runtime:addEventListener("collision", onCollision) 

audio.play(taSound) 
background:addEventListener("touch", addtoit) 
end 

function scene:exitScene(event) 

Runtime:removeEventListener("touch", touchScreen) 
Runtime:removeEventListener("enterFrame", city1) 
Runtime:removeEventListener("enterFrame", city2) 
Runtime:removeEventListener("enterFrame", city3) 
Runtime:removeEventListener("enterFrame", city4) 
Runtime:removeEventListener("enterFrame", mine1) 
Runtime:removeEventListener("enterFrame", mine2) 
Runtime:removeEventListener("enterFrame", mine3) 
Runtime:removeEventListener("enterFrame", mine4) 
Runtime:removeEventListener("collision", onCollision) 

end 

function scene:destroyScene(event) 

end 
scene:addEventListener("createScene", scene) 
scene:addEventListener("enterScene", scene) 
scene:addEventListener("exitScene", scene) 
scene:addEventListener("destroyScene", scene) 
return scene 
+0

Вы можете указать код для SCENE2? – DevfaR

ответ

0

я Тхи nk проблема находится в scene:enterScene, вы пытаетесь снова и снова загружать свой городской объект, в то же время в вашем коде слишком много прослушивателей времени выполнения, которые он повторяет при вызове того же объекта. Вы создаете игру с прокруткой? если это так, вы можете попытаться увидеть эту ссылку о том, как создать боковую прокрутку с нуля. http://mobile.tutsplus.com/tutorials/corona/corona-sdk-create-a-side-scroller-from-scratch/ надеется, что это поможет

Смежные вопросы