attempt to index field 'view' (a nil value ) error

Error is coming from :      scene.view:insert( spikes )


 

local function createDisplay() local image = display.newImage( "gameBg1.jpg", centerX, centerY ) scene.view:insert ( image ) local startXpos = 30 for x =1, 40 do local block = display.newImage("blocktest1.png") block:translate( startXpos, 600) scene.view:insert ( block ) startXpos = startXpos + 40 physics.addBody(block, "static", {friction=0.5, bounce=0 } ) end local startXpos = 400 local ball = display.newImage("ball.png") ball:translate( startXpos, 300) scene.view:insert ( ball ) physics.addBody(ball,"dynamic", physicsData:get("ball")) ball:applyTorque ( 500 ) end local startXpos = 500 local spikes = display.newImage("spikes.png") spikes:translate( startXpos, 400) scene.view:insert( spikes ) physics.addBody(spikes, "static", physicsData:get("spikes"))

If I delete this : 

 

local startXpos = 500 local spikes = display.newImage("spikes.png") spikes:translate( startXpos, 400) scene.view:insert( spikes ) physics.addBody(spikes, "static", physicsData:get("spikes"))

Everything works fine, and if I move that to where the ball code is, everything works fine.

Any ideas ?

No coords for spikes?

yes theres coords, ( startXpos, 400 )
startXpos = 500

Here’s my level1.lua’


---------------------------- -- Level1.lua ---------------------------- local storyboard = require( "storyboard" ) local scene = storyboard.newScene() local centerX = display.contentCenterX local centerY = display.contentCenterY -- Start physics local physics = require("physics") physics.start() local physicsData = (require "ball").physicsData(1.0) local physicsData = (require "spikes").physicsData(1.0) -- Hide status bar display.setStatusBar(display.HiddenStatusBar) local function createDisplay() local image = display.newImage( "gameBg1.jpg", centerX, centerY ) scene.view:insert ( image ) local startXpos = 30 for x =1, 40 do local block = display.newImage("blocktest1.png") block:translate( startXpos, 600) scene.view:insert ( block ) startXpos = startXpos + 40 physics.addBody(block, "static", {friction=0.5, bounce=0 } ) end local startXpos = 400 local ball = display.newImage("ball.png") ball:translate( startXpos, 300) scene.view:insert ( ball ) physics.addBody(ball,"dynamic", physicsData:get("ball")) ball:applyTorque ( 500 ) end local spikes = display.newImage("spikes.png") spikes:translate(300,500) scene.view:insert ( spikes ) physics.addBody(spikes, "static", physicsData:get("spikes")) function scene:createScene( event ) local screenGroup = self.view createDisplay() print("\n2: createScene event" ) end -- Called immediately after scene has moved onscreen function scene:enterScene( event ) print( "1: enterScene event" ) -- remove previous scene's view storyboard.purgeScene( "levels" ) end -- called immediately after scene has moved onscreen function scene:exitScene( event ) print( "1: exitScene event" ) end -- called prior to the removal of scenes view (display group) function scene:destroyScene ( event ) print( "(( destroying levels view))") end --------------------------------------------------------------------------------- -- END OF YOUR IMPLEMENTATION --------------------------------------------------------------------------------- -- "createScene" event is dispatched if scene's view does not exist scene:addEventListener( "createScene", scene ) -- "enterScene" event is dispatched whenever scene transition has finished scene:addEventListener( "enterScene", scene ) -- "exitScene" event is dispatched before next scene's transition begins scene:addEventListener( "exitScene", scene ) -- "destroyScene" event is dispatched before view is unloaded, which can be -- automatically unloaded in low memory situations, or explicitly via a call to -- storyboard.purgeScene() or storyboard.removeScene(). scene:addEventListener( "destroyScene", scene ) --------------------------------------------------------------------------------- return scene

I’m going to guess this is a dumb post, since no one is answering.
I’m going mentally insane, I have no idea how to fix it. 

Hi @sindrekristiansen,

Your local spikes … is out of the createDisplay function.

Move them inside and it should be fine.

Keep calm.

Cheers!

burhan

Note : It is easier to see if your function… end  statement is in the same tab/column.

No coords for spikes?

yes theres coords, ( startXpos, 400 )
startXpos = 500

Here’s my level1.lua’


---------------------------- -- Level1.lua ---------------------------- local storyboard = require( "storyboard" ) local scene = storyboard.newScene() local centerX = display.contentCenterX local centerY = display.contentCenterY -- Start physics local physics = require("physics") physics.start() local physicsData = (require "ball").physicsData(1.0) local physicsData = (require "spikes").physicsData(1.0) -- Hide status bar display.setStatusBar(display.HiddenStatusBar) local function createDisplay() local image = display.newImage( "gameBg1.jpg", centerX, centerY ) scene.view:insert ( image ) local startXpos = 30 for x =1, 40 do local block = display.newImage("blocktest1.png") block:translate( startXpos, 600) scene.view:insert ( block ) startXpos = startXpos + 40 physics.addBody(block, "static", {friction=0.5, bounce=0 } ) end local startXpos = 400 local ball = display.newImage("ball.png") ball:translate( startXpos, 300) scene.view:insert ( ball ) physics.addBody(ball,"dynamic", physicsData:get("ball")) ball:applyTorque ( 500 ) end local spikes = display.newImage("spikes.png") spikes:translate(300,500) scene.view:insert ( spikes ) physics.addBody(spikes, "static", physicsData:get("spikes")) function scene:createScene( event ) local screenGroup = self.view createDisplay() print("\n2: createScene event" ) end -- Called immediately after scene has moved onscreen function scene:enterScene( event ) print( "1: enterScene event" ) -- remove previous scene's view storyboard.purgeScene( "levels" ) end -- called immediately after scene has moved onscreen function scene:exitScene( event ) print( "1: exitScene event" ) end -- called prior to the removal of scenes view (display group) function scene:destroyScene ( event ) print( "(( destroying levels view))") end --------------------------------------------------------------------------------- -- END OF YOUR IMPLEMENTATION --------------------------------------------------------------------------------- -- "createScene" event is dispatched if scene's view does not exist scene:addEventListener( "createScene", scene ) -- "enterScene" event is dispatched whenever scene transition has finished scene:addEventListener( "enterScene", scene ) -- "exitScene" event is dispatched before next scene's transition begins scene:addEventListener( "exitScene", scene ) -- "destroyScene" event is dispatched before view is unloaded, which can be -- automatically unloaded in low memory situations, or explicitly via a call to -- storyboard.purgeScene() or storyboard.removeScene(). scene:addEventListener( "destroyScene", scene ) --------------------------------------------------------------------------------- return scene

I’m going to guess this is a dumb post, since no one is answering.
I’m going mentally insane, I have no idea how to fix it. 

Hi @sindrekristiansen,

Your local spikes … is out of the createDisplay function.

Move them inside and it should be fine.

Keep calm.

Cheers!

burhan

Note : It is easier to see if your function… end  statement is in the same tab/column.