Making objects look the same on all screens.

Need help placing objects on screen to stay in same position on all screens.  I’ve looked and searched for weeks and can not figure it out.  I’ve attached a small program.

Hi @wvtxman and welcome to the Corona community forums. Your sample program did not attach. It’s best to upload it to DropBox, Google Drive or similar and provide a URL for people to download it, or post the project to a service like GitHub.

It would be really helpful if you provided more information. There really isn’t much here for us to go on. If you provided screenshots of how its behaving on different screens that would be quite helpful too.

With the lack of information you’ve provided, I can just suggest that you read this post and see if it helps you: https://coronalabs.com/blog/2018/08/08/understanding-content-scaling-in-corona/

You should also go to the Newbie forum and read the “Ask a better question, get a better answer” post.

Rob

this is the code I was trying to make the rectangles be in the same location on all screens including iPads.

 local numberOfSquares = 9

    local sizeOfSquares = 20

    local paint = {

        type = “gradient”,

        color1 = { .239, .217,.32},

        color2 = { .128, .57, .68, 0.2 },

        direction = “middle”

    }

for f=1, numberOfSquares  do

    rect[f] = {}

    for g=1, numberOfSquares -2 do

        rect[f][g] = 0

    end

end

    

    spaceX = 60 + display.safeScreenOriginX

    spaceY = 30 + display.safeScreenOriginY

    myY = spaceY 

   

    local squareNumber = 0

    for j=1,numberOfSquares do

        

          allSquareGroup = display.newGroup() 

       

        for i=1,numberOfSquares do

         

            squareNumber = squareNumber + 1

            squareGroup = display.newGroup()  

            rect[j][i] = display.newRect( sizeOfSquares, sizeOfSquares, sizeOfSquares, 30 )

            --rect[j][i]:setFillColor( 100, 100, 200 )

            rect[j][i].fill = paint

            rect[j][i]:setStrokeColor( 225,236,41)

            rect[j][i].strokeWidth = 1

            rect[j][i].num = ("" …tostring(j)  …tostring(i))

            rect[j][i].number = squareNumber

            rect[j][i].x = spaceX

            rect[j][i].y = spaceY

            rect[j][i].isVisible = true

            local text = display.newText("" … tostring(j) … tostring(i) ,rect[j][i].x, rect[j][i].y, native.systemFontBold, 12  )

            text:setTextColor(0, 0,0,1)

            local sx = rect[j][i].contentWidth/text.contentWidth

            local sy = rect[j][i].contentHeight/text.contentHeight

            local scale = (sx < sy ) and sx or sy

            text:scale( scale, scale )

          

            squareGroup.num = squareNumber

            squareGroup:insert(rect[j][i])

            --squareGroup:addEventListener(“touch”, squareTouched)

            table.insert( allSquareGroup ,squareGroup)

            allSquareGroup:insert(squareGroup)

            

            spaceY = rect[j][i].y  + 33

            

             if i == numberOfSquares  then

               spaceY =  myY

                         end

    end – for i

               

      spaceX =  spaceX + 25

    end --for j

Hi @wvtxman.

Please re-read my post above. The code you posted isn’t formatted. Use the blue <> button in the row with Bold and Italic and paste your code in the popup window. But your config.lua has a big impact on how things work. This is why I asked you to provide a full sample project in a .zip file.

Please read the post I referred to here: https://forums.coronalabs.com/topic/55780-ask-a-better-question-get-a-better-answer/

Asking better questions translates to better, more helpful answers. It’s our long standing mantra: Help us Help you!

Rob

For me, i would put the graphics that will appear on top of all pages in ‘main.lua’

Try putting ‘allSquareGroup = display.newGroup()’ in ‘main.lua’. Then it should be on top of all other pages.

Hi @wvtxman and welcome to the Corona community forums. Your sample program did not attach. It’s best to upload it to DropBox, Google Drive or similar and provide a URL for people to download it, or post the project to a service like GitHub.

It would be really helpful if you provided more information. There really isn’t much here for us to go on. If you provided screenshots of how its behaving on different screens that would be quite helpful too.

With the lack of information you’ve provided, I can just suggest that you read this post and see if it helps you: https://coronalabs.com/blog/2018/08/08/understanding-content-scaling-in-corona/

You should also go to the Newbie forum and read the “Ask a better question, get a better answer” post.

Rob

this is the code I was trying to make the rectangles be in the same location on all screens including iPads.

 local numberOfSquares = 9

    local sizeOfSquares = 20

    local paint = {

        type = “gradient”,

        color1 = { .239, .217,.32},

        color2 = { .128, .57, .68, 0.2 },

        direction = “middle”

    }

for f=1, numberOfSquares  do

    rect[f] = {}

    for g=1, numberOfSquares -2 do

        rect[f][g] = 0

    end

end

    

    spaceX = 60 + display.safeScreenOriginX

    spaceY = 30 + display.safeScreenOriginY

    myY = spaceY 

   

    local squareNumber = 0

    for j=1,numberOfSquares do

        

          allSquareGroup = display.newGroup() 

       

        for i=1,numberOfSquares do

         

            squareNumber = squareNumber + 1

            squareGroup = display.newGroup()  

            rect[j][i] = display.newRect( sizeOfSquares, sizeOfSquares, sizeOfSquares, 30 )

            --rect[j][i]:setFillColor( 100, 100, 200 )

            rect[j][i].fill = paint

            rect[j][i]:setStrokeColor( 225,236,41)

            rect[j][i].strokeWidth = 1

            rect[j][i].num = ("" …tostring(j)  …tostring(i))

            rect[j][i].number = squareNumber

            rect[j][i].x = spaceX

            rect[j][i].y = spaceY

            rect[j][i].isVisible = true

            local text = display.newText("" … tostring(j) … tostring(i) ,rect[j][i].x, rect[j][i].y, native.systemFontBold, 12  )

            text:setTextColor(0, 0,0,1)

            local sx = rect[j][i].contentWidth/text.contentWidth

            local sy = rect[j][i].contentHeight/text.contentHeight

            local scale = (sx < sy ) and sx or sy

            text:scale( scale, scale )

          

            squareGroup.num = squareNumber

            squareGroup:insert(rect[j][i])

            --squareGroup:addEventListener(“touch”, squareTouched)

            table.insert( allSquareGroup ,squareGroup)

            allSquareGroup:insert(squareGroup)

            

            spaceY = rect[j][i].y  + 33

            

             if i == numberOfSquares  then

               spaceY =  myY

                         end

    end – for i

               

      spaceX =  spaceX + 25

    end --for j

Hi @wvtxman.

Please re-read my post above. The code you posted isn’t formatted. Use the blue <> button in the row with Bold and Italic and paste your code in the popup window. But your config.lua has a big impact on how things work. This is why I asked you to provide a full sample project in a .zip file.

Please read the post I referred to here: https://forums.coronalabs.com/topic/55780-ask-a-better-question-get-a-better-answer/

Asking better questions translates to better, more helpful answers. It’s our long standing mantra: Help us Help you!

Rob

For me, i would put the graphics that will appear on top of all pages in ‘main.lua’

Try putting ‘allSquareGroup = display.newGroup()’ in ‘main.lua’. Then it should be on top of all other pages.