Comments (3)
Hi there! I really appreciate your input about how this currently works - perhaps the design can be improved. (Surely it can!)
I’ve noticed the problem before (and it relates to the general theme about avoiding global variables in Julia code for performance reasons). You need to worry only about the initial despatch of the function specified in Scene
, though:
using Luxor
function drawframe(scene, framenumber, array)
sethue("cyan")
fontsize(200)
text(string(array[framenumber]))
end
function main()
bigarray=collect(rand(1:6, 1000))
m = Movie(400, 400, "test", 1:100)
animate(m, [
Scene(m, (s, f) -> drawframe(s, f, bigarray)) # <————
],
pathname="/tmp/example.gif",
creategif=true)
end
main()
Another technique I use to pass information around is to define a frame function that accepts keyword arguments, as well as the two obligatory arguments:
function frame(scene, framenumber; k = 1)
....
Then you call the frame functions like this:
animate(heartlines, [
Scene(heartlines, backdrop, 1:700),
Scene(heartlines, (s, f) -> frame(s, f, k = 10), 1:50),
Scene(heartlines, (s, f) -> frame(s, f, k = 9), 51:100),
...
from luxor.jl.
This is using an anonymous function that takes two arguments which is defined to simply call another one that takes 3, thus splicing another argument in. What’s being passed is a function definition (I think).
This
(s, f) -> drawframe(s, f, bigarray)
is a function.
The problem being solved here is that you’re passing your new user-defined functions to an previously-defined and compiled function in Luxor that was written expecting any future functions to have two predictable arguments.
I’ll have to read the section in the manual about scope and global variables again... I didn’t quite get it last time. ;)
from luxor.jl.
What is the solution to having global variables? Can a formation of a module or struct work?
This code you wrote (s, f) -> drawframe(s, f, bigarray)) ,...looks interesting. Could you explain how this is working? Is it a use of 'dispatch' of a function to the correct most applicable method?
from luxor.jl.
Related Issues (20)
- Base Subtract operator between Luxor.Point and a Number is incorrect HOT 12
- Release 3.8.0 HOT 2
- MethodError: objects of type String are not callable HOT 3
- Update sethue() and setcolor() to accept Nothing arguement HOT 2
- Source code for how to create a graph for inclusion in Luxor Documentation HOT 7
- Drop dependencies like FFMPEG (in the long run)? HOT 6
- You can't just "Plot a pixel on the screen" HOT 3
- Remove dependency on Juno.jl HOT 3
- SVG with transparent background HOT 2
- transparency does not work for background color in svg HOT 2
- clip() using lines or boxes does not return an output HOT 2
- set_next_drawing_index` not defined HOT 3
- Time to release v4? HOT 5
- A 1x1 box is semi-transparent HOT 4
- Running @draw in a loop HOT 2
- Julia v1.11 internal changes HOT 2
- Add noindex and banner to older version documentations HOT 1
- Inconsistent behavior around tolerances in `isequal` and `isless` HOT 5
- Release 4.0 HOT 1
- Windows test failure because of Cairo_jll HOT 2
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from luxor.jl.