ここでストーリーボードの問題を解決するために数時間を費やしました. それを複製するサンプル プロジェクトを削除しました。
問題:
- シーン 1 からシーン 2 に移動し、シーン 1 に戻り、シーンを数回切り替えた後、次のようになります。
- シーンに入ると、ログに複数の enterScene/exitScene がトリガーされていることが示されます
- おそらく複数のバックグラウンド タッチ リスナーが登録されているようですが、exitScene 関数でこれらを削除しようとしています。
- 試用版を使用しています: 2011.704 (2011.12.8)
出力
<code>
-- Click on background to go back to screen_example1
storyboard.gotoScene( screen_example1)
screen_example1: enterScene
storyboard.gotoScene( screen_example1)
screen_example1: exitScene
screen_example1: enterScene
storyboard.gotoScene( screen_example1)
screen_example1: exitScene
screen_example1: enterScene
storyboard.gotoScene( screen_example1)
screen_example1: exitScene
screen_example1: enterScene
.
.
.
etc
</code>
コード: 3 つのファイル: メイン ファイルと 2 つのシーン ファイル:
main.lua
<code>
display.setStatusBar( display.HiddenStatusBar )
local storyboard = require "storyboard"
storyboard.gotoScene( "screen_example1" )
</code>
screen_example1.lua
<code>
local storyboard = require( "storyboard" )
local scene = storyboard.newScene()
local function onScreenTouch( event )
if event.phase == "began" then
print("")
storyboard.gotoScene( "scene_towerView")
end
end
function scene:createScene( event )
print ("screen_example1 - createScene")
local image = display.newImage( "bg.jpg" )
scene.view:insert( image )
end
function scene:enterScene( event )
print ("screen_example1: enterScene")
scene.view:addEventListener( "touch", onScreenTouch )
end
function scene:exitScene( event )
print ("screen_example1: exitScene")
scene.view:removeEventListener("touch", onScreenTouch)
end
-- Scene Listeners
scene:addEventListener( "createScene", scene )
scene:addEventListener( "enterScene", scene )
scene:addEventListener( "exitScene", scene )
scene:addEventListener( "destroyScene", scene )
return scene
</code>
scene_towerView.lua
<code>
local storyboard = require( "storyboard" )
local scene = storyboard.newScene()
local function onScreenTouch( event )
if event.phase == "began" then
print("")
print("storyboard.gotoScene( screen_example1)")
storyboard.gotoScene( "screen_example1")
end
end
-- Scene Handlers
function scene:createScene( event )
print ("TowerScene - createScene")
-- -- Background Image
local image = display.newImage( "bg2.jpg" )
scene.view:insert( image )
end
function scene:enterScene( event )
print ("TowerScene - enterScene")
scene.view:addEventListener( "touch", onScreenTouch )
end
-- Scene Listeners
scene:addEventListener( "createScene", scene )
scene:addEventListener( "enterScene", scene )
scene:addEventListener( "exitScene", scene )
scene:addEventListener( "destroyScene", scene )
return scene
</code>