ewein
ewein

Reputation: 2735

CoronaSDK Director Error

I am currently writing a cross platform app using the CoronaSDK and Lua. I am using the director package to change scenes. However I am getting the following error:

"Director ERROR: Failed to execute new(params) function on 'startUp'."

I know the error is coming from my main class. Which is:

-----------------------------------------------------------------------------------------
--
-- main.lua
--
-----------------------------------------------------------------------------------------

local director = require("director")
local mainGroup = display.newGroup()
splash = display.newImage("images/logo.png")

local main = function()

    splash:removeSelf()
    splash = nil
    mainGroup:insert(director.directorView)
    local widget = require "widget"

    -- show default status bar (iOS)
    display.setStatusBar(display.DefaultStatusBar)

    local mainGroup = display.newGroup()

    -- event listeners for tab buttons:
    local function onFirstView( event )
        director:changeScene("startUp")
    end

    local function onSecondView( event )
        director:changeScene("home")
    end

    -- table to setup buttons
    local tabButtons = {
        { label="Home", up="icon1.png", down="icon1-down.png", width = 32, height = 32, onPress=onFirstView, selected=true },
        { label="Cards", up="icon2.png", down="icon2-down.png", width = 32, height = 32, onPress=onSecondView },
    }

    -- create the actual tabBar widget
    local tabBar = widget.newTabBar{
        top = display.contentHeight,
        buttons = tabButtons
    }

    --I think it is this line which is causing the error
    director:changeScene("startUp")

    return true
end

timer.performWithDelay(3000, main, 1)

Here is my startUp.lua file:

module(..., package.seeall)

function new()
    require "sqlite3"
    local director = require("director")
    --Connect to database or create it.
    --Each user gets there own database****
    local path = system.pathForFile("data.db", system.DocumentsDirectory)
    local db = sqlite3.open(path)

    --Create the database table if it does not already exist
    local tablesetup = [[CREATE TABLE IF NOT EXISTS User (id Integer autoincrement PRIMARY KEY, firstname, lastname);]]
    db:exec(tablesetup)

    for row in db:nrows("SELECT * FROM User") do
        --goto home if the user is in the database.
        director.changeScene("home")
    end

    --If not in the database go to forms
    director.changeScene("forms")

    --Catch application Exit
    Runtime:addEventListener("system", onSystemEvent)

    --Handle application exit - close the database connection
    local function onSystemEvent(event)
        if(event.type == "applicationExit") then
            db:close()
        end
        print("database closed")
    end

end

Here is the error I get in the console:

Runtime Error director.lua:1092:attempt to call method 'insert' (a nil value) 
stack traceback: in function 'insert' in function 'changeScene'
---------------
Director Error: Failed to execute new(params) function on 'startUp'.
---------------
assertion failed
---------------

Upvotes: 0

Views: 1755

Answers (1)

SatheeshJM
SatheeshJM

Reputation: 3633

The error is a director class error. It occurs because your startUp.lua has some errors.

Are you using the latest director class(1.4)? The latest director class shows the ACTUAL ERROR as well.

And not that files are case-sensitive. Your file must be startUp.lua and not startup.lua.

EDIT:

I can think of 2 things.

1.Try changing director.changeScene to director:changeScene in 2 places in startUp.lua

2.Try removing the second local mainGroup = display.newGroup() in main.lua (though I doubt this would be the prob)

THE ACTUAL ERROR

-----------------------
Director ERROR: Failed to execute new( params ) function on 'wifiscreen'.
-----------------------
e:\corona\satheesh\doodle2\wifiscreen.lua:231: attempt to index global 'x' (a nil value)
-----------------------

The second line is the avtual error.

ERROR FOUND I THINK

I think the error is because you don't have a onSystemEvent function. Generally assertion failed error occurs if you try to add listeners to non-existing functions!

Upvotes: 1

Related Questions