A brief reference to the Line class.
Line contains some methods also found in Renderable, but is not a Renderable, as it does not possess a width and height.
You can initialize a Line in a few different ways:
line = Line(screen, x1, y1, x2, y2) # Pass two points
line = Line(screen, (x1, y1), (x2, y2)) # Two points as tuples
line = Line(screen, location1, location2) # Two points as Locations
You can move the Line using slightly modified methods from Object:
We can translate by a specified amount with:
line.move(dx, dy) # Move both points by dx, dy
line.move(dx, dy, point=1) # Move only the first point by dx, dy
We can move both positions to new locations with:
line.moveto(x1, y1, x2, y2)
line.moveto((x1, y1), (x2, y2))
We can change only one of the positions with either:
Most methods in Line are able to take numbers, tuples, or Locations because Lines deal with more coordinates than Renderables.
Retrieve both positions in a tuple using the familiar:
line.location() # Returns both endpoints positions as a tuple (pos1, pos2)
You can rotate lines just as you would expect:
line.rotation() # Get the current rotation
line.rotation(rotation) # Set a new angle
line.rotate(angle_change) # Change angle by angle_change
Or we can pass a location in for the line to look at:
line.lookat(location) # Look at the passed location (moves second endpoint)
line.lookat(location, point=1) # Move the first point instead
You can change the Color of a Line just like a Renderable:
line.color() # Retrieve the current Color
line.color(color) # Set a new Color
You can modify the thickness of the line in pixels with:
You may decide to change the line to a dotted line with:
line.dashes(3) # Add dashes 3px in length with 3px between them
line.dashes((3, 2)) # Specify dash length and distance separately.
You can get the length of the line by calling:
Visibility is accessed exactly as it is in Renderable:
Transforms and cloning work as in Renderable:
line.transform() # (pos1, pos2, angle)
Line's transform is a tuple with both positions and current angle.
Cloning works as expected:
line2 = line.clone() # new line that's the same!
The Line's version of Renderable's
intersects(). It can take any Renderable or Line and will check if the line intersects with any of their lines.