Howdy, Stranger!

It looks like you're new here. If you want to get involved, click one of these buttons!

Question about the touch function

edited January 2014 in Questions Posts: 29

i am a beginner and i am trying to make a code in which you can draw. I can get it to draw by making it place ellipses where ever I touch but I want to be able to make the drawing size bigger and smaller and change the color without the spot I lifted my finger to get larger or change color. I know its confusing so I'll give you what I have so far.

function setup()

x = 100000

y = 100000

parameter.color("Color", color(255, 0, 0, 255))

parameter.integer("Size", 0, 150, 20)

backingMode(RETAINED)

end

function draw()

fill(Color)

ellipse(x, y, Size)

end

function touched(touch)

x = touch.x

y = touch.y

end
Tagged:

Comments

  • Posts: 577

    @Joey72099 A easy way of not allowing the spot to get bigger would be resetting the x and y.

    Example:

    function setup()
    
    x = 100000
    
    y = 100000
    
    parameter.color("Color", color(255, 0, 0, 255))
    
    parameter.integer("Size", 0, 150, 20)
    
    backingMode(RETAINED)
    
    end
    
    function draw()
    
    fill(Color)
    
    ellipse(x, y, Size)
    
    x = 100000
    y = 100000
    
    
    end
    
    function touched(touch)
    
    x = touch.x
    
    y = touch.y
    
    end
    
  • edited January 2014 Posts: 2,042

    Easiest way is to use a table.

    EX: in setup define the table: spots = {}

    in draw you draw the stuff in the table:

    for id, spot in ipairs(spots) do
        fill(spot.colour)
        ellipse(spot.x, spot.y, spot.size)
    end
    

    in touched you store touches in the table: table.insert(spots, {x = touch.x, y = touch.y, size = Size, colour = Color})

    Hope that helps. (Just remove the code you have in draw and use this instead)

    If you need/want an explanation of how it all works, feel free to ask

    P.S. @Prynok, how does that solve the problem?

  • @JakAttak It does not seem to be working for me. What should I get rid of from my original?

  • edited January 2014 Posts: 29

    @JakAttak @Prynok I'm pretty sure that Prynok's idea works but I think in the long run as a new programmer I'm going to want to better understand tables and the stuff that JakAttak's using so I still want to hear your idea JakAttack but thanks for the script Prynok

  • Posts: 2,042

    @Joey72099, i may have misunderstood what you wanted to do...

    But try this:

    function setup()
        parameter.color("Color", color(255, 0, 0, 255))
    
        parameter.integer("Size", 0, 150, 20)
    
        backingMode(RETAINED)
    
        spots = {}
    end
    
    function draw()
        for id, spot in ipairs(spots) do
            fill(spot.colour)
            ellipse(spot.x, spot.y, spot.size)
        end
    end
    
    function touched(touch)
        table.insert(spots, {x = touch.x, y = touch.y, size = Size, colour = Color})
    end
    
  • @JakAttak Can you explain how this works to me

  • and would there be any way to keep it from making separate circles instead of a single line if you go to fast across the screen or is that just a processor thing or something like that that just can't do that many circles a second

  • IgnatzIgnatz Mod
    Posts: 5,396

    @Joey72099 - it sounds like you may need to do a few tutorials before going any further. You'll find them on the wiki link above, along with some ebooks. I recommend starting with Lua, the language behind Codea.

    We don't have the resources to do 1:1 training in the forum, unfortunately.

  • Posts: 2,042

    The line in setup: spots = {} initiates a table and stores it as variable spots.

    The code in draw is called a for loop. It goes through everything stored in the table spots and draws a circle using the info stored.

    The code in touched stores the info of the size, colour, and placement of the dot everytime you touch the screen. This is permanent, allowing you to change the Size and Color without overwriting already draw dots.

  • edited January 2014 Posts: 577

    @JakAttack He asked
    "I want to be able to make the drawing size bigger and smaller and change the color without the spot I lifted my finger to get larger or change color."

    So I gave him a easy solution, so instead of the touch always being in the last place, causing the above problems, it resets itself back to the original position.

  • Posts: 371

    @Joey72099, I think you should look at the backingMode(RETAINED) function. Here is a small demo I whipped up:

    function setup()
        backingMode(RETAINED)
        background(255, 255, 255)
        stroke(0)
        strokeWidth(20)
        parameter.integer('StrokeWidth', 0, 150, 20, strokeWidth)
        parameter.color('Color', color(0, 0, 0, 255), stroke)
        parameter.action('Clear', function () background(255, 255, 255) end)
    end
    function draw()
    
    end
    
    function touched(touch)
        line(touch.x, touch.y, touch.x - touch.deltaX, touch.y - touch.deltaY)
    end
    
    
  • dave1707dave1707 Mod
    Posts: 7,605

    Joey72099 Is this kind of what you're after. Change the size and color for each draw.


    function setup()     parameter.color("colr",255,0,0)     parameter.integer("size",2,80,10)     xyTab={}    -- x,y table     colTab={}    -- color table end function draw()     background(40,40,50)     for a,b in pairs(xyTab) do         stroke(colTab[a])    -- set olor         strokeWidth(b.z)    -- set line size         if b.w==1 then             sx=b.x    -- start line x,y location             sy=b.y         else             line(sx,sy,b.x,b.y)    -- draw line from previous location             sx=b.x    -- save x,y for next line              sy=b.y         end     end end function touched(t)     if t.state==BEGAN then    -- starting to draw         table.insert(xyTab,vec4(t.x,t.y,size,1))    -- save x,y position         table.insert(colTab,colr)    -- save color     end     if t.state==MOVING then     -- continue to draw         table.insert(xyTab,vec4(t.x,t.y,size,2))         table.insert(colTab,colr)     end end
  • edited January 2014 Posts: 29

    @Jordan So does the clear button make everything the background color or does it get rid of the writing?

  • @Jordan @dave1707 both of these work great thanks so much for the help

Sign In or Register to comment.