The basic atomic living and moving object.

A sprite has a position and a velocity

Introduced properties

fun angle_to(target: Sprite): Float

scene2d :: Sprite :: angle_to

Return the angle to target an other sprite
fun bottom: Int

scene2d :: Sprite :: bottom

Y coordinate of bottom.
fun height: Int

scene2d :: Sprite :: height

height of the sprite
fun height=(height: Int)

scene2d :: Sprite :: height=

height of the sprite
fun left: Int

scene2d :: Sprite :: left

X coordinate of left side.
fun overlaps(other: Sprite): Bool

scene2d :: Sprite :: overlaps

Is self overlaps (or contains) an other sprite
fun right: Int

scene2d :: Sprite :: right

X coordinate of right side.
fun set_velocity(angle: Float, maginude: Int)

scene2d :: Sprite :: set_velocity

Update of vx and vy toward a given angle and magnitude
fun top: Int

scene2d :: Sprite :: top

Y coordinate of top.
fun velocity_angle: Float

scene2d :: Sprite :: velocity_angle

Return the current angle of velocity
fun vx: Int

scene2d :: Sprite :: vx

x velocity (applied by `update')
fun vx=(vx: Int)

scene2d :: Sprite :: vx=

x velocity (applied by `update')
fun vy: Int

scene2d :: Sprite :: vy

y velocity (applied by `update')
fun vy=(vy: Int)

scene2d :: Sprite :: vy=

y velocity (applied by `update')
fun width: Int

scene2d :: Sprite :: width

width of the sprite
fun width=(width: Int)

scene2d :: Sprite :: width=

width of the sprite
fun x: Int

scene2d :: Sprite :: x

x coordinate of the center point
fun x=(x: Int)

scene2d :: Sprite :: x=

x coordinate of the center point
fun y: Int

scene2d :: Sprite :: y

y coordinate of the center point
fun y=(y: Int)

scene2d :: Sprite :: y=

y coordinate of the center point

Redefined properties

redef type SELF: Sprite

scene2d $ Sprite :: SELF

Type of this instance, automatically specialized in every class
redef fun draw(view: View)

scene2d $ Sprite :: draw

Redefine this method to asks how to draw on a view
redef fun update

scene2d $ Sprite :: update

Compute the position, state and appearance.

All properties

fun !=(other: nullable Object): Bool

core :: Object :: !=

Have self and other different values?
fun ==(other: nullable Object): Bool

core :: Object :: ==

Have self and other the same value?
type CLASS: Class[SELF]

core :: Object :: CLASS

The type of the class of self.
type SELF: Object

core :: Object :: SELF

Type of this instance, automatically specialized in every class
fun angle_to(target: Sprite): Float

scene2d :: Sprite :: angle_to

Return the angle to target an other sprite
fun bottom: Int

scene2d :: Sprite :: bottom

Y coordinate of bottom.
protected fun class_factory(name: String): CLASS

core :: Object :: class_factory

Implementation used by get_class to create the specific class.
fun class_name: String

core :: Object :: class_name

The class name of the object.
abstract fun draw(view: View)

scene2d :: LiveObject :: draw

Redefine this method to asks how to draw on a view
fun exists: Bool

scene2d :: LiveObject :: exists

Controls whether update' anddraw' are automatically called by `LiveGroup'
fun exists=(exists: Bool)

scene2d :: LiveObject :: exists=

Controls whether update' anddraw' are automatically called by `LiveGroup'
fun get_class: CLASS

core :: Object :: get_class

The meta-object representing the dynamic type of self.
fun hash: Int

core :: Object :: hash

The hash code of the object.
fun height: Int

scene2d :: Sprite :: height

height of the sprite
fun height=(height: Int)

scene2d :: Sprite :: height=

height of the sprite
init init

core :: Object :: init

fun inspect: String

core :: Object :: inspect

Developer readable representation of self.
protected fun inspect_head: String

core :: Object :: inspect_head

Return "CLASSNAME:#OBJECTID".
intern fun is_same_instance(other: nullable Object): Bool

core :: Object :: is_same_instance

Return true if self and other are the same instance (i.e. same identity).
fun is_same_serialized(other: nullable Object): Bool

core :: Object :: is_same_serialized

Is self the same as other in a serialization context?
intern fun is_same_type(other: Object): Bool

core :: Object :: is_same_type

Return true if self and other have the same dynamic type.
fun left: Int

scene2d :: Sprite :: left

X coordinate of left side.
intern fun object_id: Int

core :: Object :: object_id

An internal hash code for the object based on its identity.
fun output

core :: Object :: output

Display self on stdout (debug only).
intern fun output_class_name

core :: Object :: output_class_name

Display class name on stdout (debug only).
fun overlaps(other: Sprite): Bool

scene2d :: Sprite :: overlaps

Is self overlaps (or contains) an other sprite
fun right: Int

scene2d :: Sprite :: right

X coordinate of right side.
fun serialization_hash: Int

core :: Object :: serialization_hash

Hash value use for serialization
fun set_velocity(angle: Float, maginude: Int)

scene2d :: Sprite :: set_velocity

Update of vx and vy toward a given angle and magnitude
intern fun sys: Sys

core :: Object :: sys

Return the global sys object, the only instance of the Sys class.
abstract fun to_jvalue(env: JniEnv): JValue

core :: Object :: to_jvalue

fun to_s: String

core :: Object :: to_s

User readable representation of self.
fun top: Int

scene2d :: Sprite :: top

Y coordinate of top.
fun update

scene2d :: LiveObject :: update

Compute the position, state and appearance.
fun velocity_angle: Float

scene2d :: Sprite :: velocity_angle

Return the current angle of velocity
fun vx: Int

scene2d :: Sprite :: vx

x velocity (applied by `update')
fun vx=(vx: Int)

scene2d :: Sprite :: vx=

x velocity (applied by `update')
fun vy: Int

scene2d :: Sprite :: vy

y velocity (applied by `update')
fun vy=(vy: Int)

scene2d :: Sprite :: vy=

y velocity (applied by `update')
fun width: Int

scene2d :: Sprite :: width

width of the sprite
fun width=(width: Int)

scene2d :: Sprite :: width=

width of the sprite
fun x: Int

scene2d :: Sprite :: x

x coordinate of the center point
fun x=(x: Int)

scene2d :: Sprite :: x=

x coordinate of the center point
fun y: Int

scene2d :: Sprite :: y

y coordinate of the center point
fun y=(y: Int)

scene2d :: Sprite :: y=

y coordinate of the center point
package_diagram scene2d::Sprite Sprite scene2d::LiveObject LiveObject scene2d::Sprite->scene2d::LiveObject core::Object Object scene2d::LiveObject->core::Object ...core::Object ... ...core::Object->core::Object

Ancestors

interface Object

core :: Object

The root of the class hierarchy.

Parents

abstract class LiveObject

scene2d :: LiveObject

The root class of the living objects (sprites, group of sprites, etc.)

Class definitions

scene2d $ Sprite
# The basic atomic living and moving object.
#
# A sprite has a position and a velocity
class Sprite
	super LiveObject

	# x coordinate of the center point
	var x: Int = 0 is writable

	# y coordinate of the center point
	var y: Int = 0 is writable

	# width of the sprite
	var width: Int = 100 is writable

	# height of the sprite
	var height: Int = 100 is writable

	# X coordinate of left side.
	fun left: Int do return x - width/2

	# X coordinate of right side.
	fun right: Int do return x + width/2

	# Y coordinate of top.
	fun top: Int do return y - height/2

	# Y coordinate of bottom.
	fun bottom: Int do return y + height/2

	# x velocity (applied by `update')
	var vx: Int = 0 is writable

	# y velocity (applied by `update')
	var vy: Int = 0 is writable

	redef fun update
	do
		self.x += self.vx
		self.y += self.vy
	end

	redef fun draw(view) do view.draw_sprite(self)

	# Is self overlaps (or contains) an other sprite
	# `x', `y', `width', and `height' of both sprites are considered
	fun overlaps(other: Sprite): Bool
	do
		return self.right > other.left and self.left < other.right and self.bottom > other.top and self.top < other.bottom
	end

	# Return the current angle of velocity
	# Often used to rotate the displayed image with the correct angle
	fun velocity_angle: Float
	do
		return atan2(self.vx.to_f, -self.vy.to_f)
	end

	# Return the angle to target an other sprite
	fun angle_to(target: Sprite): Float
	do
		return atan2((target.x-self.x).to_f, (self.y-target.y).to_f)
	end

	# Update of vx and vy toward a given angle and magnitude
	fun set_velocity(angle: Float, maginude: Int)
	do
		var magf = maginude.to_f
		self.vx = (angle.sin * magf).to_i
		self.vy = (angle.cos * -magf).to_i
	end

end
lib/scene2d/scene2d.nit:33,1--105,3