【问题标题】:Why does group:insert fail after a storyboard scene change?为什么在故事板场景更改后 group:insert 失败?
【发布时间】:2014-01-29 09:45:56
【问题描述】:

下面的代码示例来自一个故事板场景。放大镜 (mg)、绿色圆圈 (asset1)、返回按钮和动画船 (ship) 在展开时都添加到场景的显示组中。在此期间,船也被 display.remove(ship) 再次删除。 第一次创建场景时一切正常,但是,当我单击返回按钮,进行场景更改,然后返回此场景时,代码尝试将船添加到显示组时失败:“尝试调用方法 'insert' (一个 nil 值)"

什么给了?

    local storyboard = require ("storyboard")
    local widget = require ("widget")
    local scene = storyboard.newScene()
    storyboard.purgeOnSceneChange = true

    function scene:createScene(event)
        local group=self.view
        local asset1x = 600
        local asset1y = 400

    -- MAGNIFYING GLASS
        local mg=display.newImage( "images/mg.jpg" )
        mg.x=600
        mg.y=150
        mg.myName = "mg"
        physics.addBody(mg,"dynamic", { density = 1.0, friction = 0.3, bounce = 0.2, radius = mgRadius})    
        group:insert(mg)            

    -- ASSET PLANT
        local asset1 = display.newCircle(asset1x,asset1y,30)
        asset1:setFillColor(100,200,300)
        physics.addBody(asset1,"static")
        asset1.myName = "asset1"
        asset1.isSensor = true
        asset1.isVisible = false
        group:insert(mg)

        asset1.collision = function(self,event)
            if (event.phase == "began" and event.other.myName == "mg") then
                print("began")
                ship=display.newSprite( shipSheet, shipSeqData )
                ship:play()
                ship:scale(2,2)
                ship.x=asset1x
                ship.y=asset1y
                ship.myName = "ship"
                group:insert(ship)
            elseif (event.phase == "ended" and event.other.myName == "mg") then
                print("ended")
                display.remove(ship)
            end
        end
        asset1:addEventListener("collision")

    -- RETURN BUTTON
        local function returnWelcome(event)
            storyboard.gotoScene("000","fade", 600)
        end
        local returnButton = widget.newButton
        {
            left=900,
            top=385,
            width=300,
            height=225,
            defaultFile="images/bg000.jpg",
            onRelease=returnWelcome,
        }
        group:insert(returnButton)

    end

    scene:addEventListener( "createScene", scene )

    return scene

【问题讨论】:

    标签: lua coronasdk


    【解决方案1】:

    事实证明,我不小心将 mg 显示对象添加到显示组两次并且从未添加 assets1 - 这不知何故导致了错误。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-05-23
      • 2018-04-21
      • 2012-12-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多