-
Notifications
You must be signed in to change notification settings - Fork 341
Objects
Like shown previously in the introduction to give our Heaps application visual (2D) content we need classes that are build upon h2d.Object
.
An Object (represented by h2d.Object) is the base class of all 2D objects, so any thing that you can see on the screen. Therefore h2d.Object
provides variables like a position (x,y), a scale (scaleX,scaleY), a rotation and methods to change them.
h2d.Object
s can be any visual objects in the world of the game like for instance the player, enemies, buildings, but furthermore also buttons (h2d.Interactive
) or a h2d.Flow
that arranges UI elements and many more.
A collection of different objects that all inherit from h2d.Object
. (See code below to run the sample)
These are all h2d
package classes (and sub-classes) that extend h2d.Object
and can be used to create 2D content:
- Console
- Drawable
- Anim, Bitmap, Particles, SpriteBatch
- Graphics
- Benchmark
- Interactive
- Slider
- Text
- HtmlText, TextInput
- TileGroup
- ScaleGrid
- Video
- Flow
- CheckBox, Dropdown
- Mask
- KeyFrames
- Layers
- CdbLevel, Scene, ZGroup
- ObjectFollower
- Loader
An outlook towards different kinds of h2d.Object
s:
class AllKindsOfObjects extends hxd.App {
static function main() {new AllKindsOfObjects();}
function new() {super();}
override function init() {
// a mere h2d.Object (no visual qualities => nothing to see here)
var obj = new h2d.Object( s2d );
// a mere h2d.Object has no visual qualities to it
// it's just a container by itself... even though added to the scene there's nothing to see...
// a h2d.Text (like from the Hello World! sample)
var text = new h2d.Text( hxd.res.DefaultFont.get(), s2d );
text.text = "A simple h2d.Text";
text.textColor = 0xFBC707;
// a h2d.Bitmap (from coded tile, no resource used)
var bitmap = new h2d.Bitmap( h2d.Tile.fromColor( 0xFF0000, 32, 32 ), s2d );
// a h2d.Graphics
var graphics = new h2d.Graphics( s2d );
graphics.lineStyle( 2, 0xFFFFFF );
graphics.beginFill( 0x33cc33 );
graphics.drawCircle( 0, 0, 16 );
graphics.beginFill( 0xff6666 );
graphics.drawRect( 4, 4, 12, 12 );
// an h2d.Anim object
var k = 32;
var tfa = []; // tiles for animation "tfa"
tfa.push( h2d.Tile.fromColor( 0xFF0000, k, k ) );
tfa.push( h2d.Tile.fromColor( 0xFFFF00, k, k ) );
tfa.push( h2d.Tile.fromColor( 0x00FFFF, k, k ) );
tfa.push( h2d.Tile.fromColor( 0x0000FF, k, k ) );
tfa.push( h2d.Tile.fromColor( 0xFF00FF, k, k ) );
var anim = new h2d.Anim( tfa, 2, s2d );
// a h2d.Interactive (button-like) object
var interactive = new h2d.Interactive( 100, 50, s2d );
var col_default = 0xFF3366ff;
var col_over = 0xFF809fff;
var col_push = 0xFF33cc33;
interactive.backgroundColor = col_default;
interactive.onOver = (e)->{ interactive.backgroundColor = col_over; };
interactive.onOut = (e)->{ interactive.backgroundColor = col_default; };
interactive.onPush = (e)->{ interactive.backgroundColor = col_push; };
interactive.onClick = (e)->{ trace("Clicking button."); };
// info texts
explanationLabel( text, "h2d.Text:" );
explanationLabel( bitmap, "h2d.Bitmap:" );
explanationLabel( graphics, "h2d.Graphics:" );
explanationLabel( anim, "h2d.Anim:" );
explanationLabel( interactive, "h2d.Interactive:\n(click me)" );
// scatter positions
text .setPosition( 200, 100 );
bitmap .setPosition( 200, 200 );
graphics .setPosition( 200, 300 );
anim .setPosition( 200, 400 );
interactive.setPosition( 200, 500 );
}
function explanationLabel( obj:h2d.Object, explanation:String ) : h2d.Text {
var t = new h2d.Text( hxd.res.DefaultFont.get(), obj );
t.text = explanation;
t.setPosition( -150, 0 );
return t;
}
}
Objects can be added to a scene directly (a h2d.Scene
, for instance s2d
when inside hxd.App
) or be added to another h2d.Object
creating an object tree. Object trees are regarded in the next section about Object trees.