It looks like you're new here. If you want to get involved, click one of these buttons!
When I use the line command inside a image using setcontext it crashes codea back and I need to restart it. All changes are lost.
im = image(64,64)
setContext(im)
cnt=64
fill(255)
for x =0,64 do
--line(x,x/2,x,x/2)
rect(64-x,32-x/2,1,x)
cnt=cnt-1
end
setContext()
Not sure how to post code yet.
Comments
@Pakz Not sure what you’re trying to do, but here’s how you might use set context.
To post code, put 3 tildes ~~~ on a line before and after your code.
Without seeing your complete code I can’t say why you were crashing. The above code didn’t crash my iPad.
Ah. When I put the code with the line command inside the setup function it does not crash. When outside that function(I put it outside a function on the top of the code) it does crash with the line command but not with the rect command.
I think I need to start putting code like that inside setup()
@Pakz Normally all of your code should be within a function, but with a few exceptions. The setup function needs to run first because there’s a lot things that needs to be initialized so the code runs right.
That makes sense and wil make sure to start putting most things inside functions now. I was a bit worried it just exited there.
Before setup is called the graphics context hasn't been set up yet. Code outside of a function gets called first, so this is why you get issues with calls to graphics based functions
I might add that there are other issues with code outside of functions, some of which can be really confusing. It can be a pain, but I've come to think that what works best for me is to do one of two things:
First, most commonly, I'll put initialization code in setup, or a function called from setup. This is a bit of a pain, because often I forget, and it makes exporting the code more difficult, as the receiving program needs to do the setup stuff.
Second, I might use a "lazy init", some code like this, in code that needs initialization, such as a class Foo. (The "init" below is the one that defines an instance when you say.
Foo()
.There are, of course, more "clever" ways to do this sort of thing but these two approaches are my most common.
I was just bitten by the "init outside of a function" problem yesterday, so it still happens. I was so sure that this one was OK ...
Yeah I can see how this is a pain. The new runtime I'm working on allows you to do anything you want outside of setup, so you can even load images, create shaders, etc. I haven't tested contexts in that way though.