Line contains some methods also found in Renderable, but is not a Renderable, as it does not possess a width and height.
Initialization
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
Movement
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))
line.moveto(location1, location2)
We can change only one of the positions with either:
line.pos1(location)
line.pos2(location)
Most methods in Line are able to take numbers, tuples, or Locations because Lines deal with more coordinates than Renderables.
Location
Retrieve both positions in a tuple using the familiar:
line.location()# Returns both endpoints positions as a tuple (pos1, pos2)
Rotation
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
Color
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
Thickness
You can modify the thickness of the line in pixels with:
line.thickness(thickness)
Dashes
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.
Length
You can get the length of the line by calling:
line.length()
Visibility
Visibility is accessed exactly as it is in Renderable:
line.visible(False)
Transform and Cloning
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!
Intersects (Overlaps)
The Line's version of Renderable's overlaps() is intersects(). It can take any Renderable or Line and will check if the line intersects with any of their lines.