opening speech

In today's tutorial, we'll look at how you can create keyboard-controlled objects in the
PushButton Engine . If you’re just starting to learn
PushButton Engine (PBE) , then it may be useful for you to read
lesson # 1 ,
lesson # 2 and
lesson # 3 from the
PBE series of lessons. Also, you can always read the lessons in the
original articles on the official website .
')
Keyboard control
“Human beings, vegetables or cosmic dust, we all dance to a mysterious melody that an invisible musician plays from a distance.” - Albert Einstein.The goal of this lesson is to learn how to create custom components that use keyboards to move a simple shape around the screen.
Like previous lessons, this lesson consists of a series of steps: small gaps that will focus on achieving small goals. This approach will speed up the process of understanding the
PusButton Engine .
This lesson will be useful to you if you are just starting to learn
PBE . But despite this, it is not necessary that you be a newcomer to programming.
Content:- Files to start the lesson
- Introduction to the lesson
- Create component
- Verification of work results
- Conclusion
Files to start the lesson
To start learning a lesson, you can download the start project and use it as a base for completing the lesson:
Set to start learning a lessonIf you compile the
.swf file from the starter kit for the lesson, then you should have a blue circle in the center of the screen.
The source files of the lesson will be available at the end of the article.
Introduction to the lesson
In the
previous lesson, we learned how to create a simple controller component that controls a character based on a behavioral model. Now, we will add keystrokes, which will add player controlled movements.
In order to streamline user input,
PBE provides the
PBE.isKeyDown () method, which checks to see if any button is pressed.
For more complex input settings, such as keyboard shortcuts or sending special events for buttons,
PBE provides the
InputManager and
InputMap classes . These classes provide more "strong" functionality, but, usually, they are not needed when creating simple games. In this lesson we will not discuss them.
Create component
Just as in the
previous lesson, we will again create a simple scene with 3 simple components: a render component, a “spatial” component and a controller component. And, again, we will create a custom component that will inherit from the
TicketComponent class, which has the ability to “update” itself on each frame.
This new component will check if the buttons are pressed left or right, and if any of them are pressed, the component will move the object.
The
InputKey class provides the ability to work with a large number of buttons:
// InputKey
InputKey.LEFT
//
InputKey.stringToKey( "LEFT" )
* This source code was highlighted with Source Code Highlighter .
In the root directory of the lesson you will find the template for the
HeroControllerComponent class. To add a response to keyboard events, each time we call the
onTick () method, we will request
PBE to check for pressing the buttons that we are interested in pressing. This can be done using the
PBE.isKeyDown () method, something like this:
// isKeyDown() , , (true — , false — )
if (PBE.isKeyDown(InputKey.SPACE))
{
//
Logger.print( this , "Hey, cheer up!" );
}
* This source code was highlighted with Source Code Highlighter .
Depending on which key was pressed, we change the position of the spatial component. As in the previous lesson, we will receive a reference to the variable position of the spatial component through the
PropertyReference class, make changes in accordance with our rules and set a new value for this variable.
The rules according to which we will change the position of the object:
1) If the “Right” key is pressed: move the object to the right
2) If the “Left” key is pressed: move the object to the left
3) If the object went beyond the right edge of the flash drive: return the object to the right edge of the flash drive
4) If the object went beyond the left edge of the flash drive: return the object to the left edge of the flash drive
Now that we have figured out how everything should work, we can implement it in code. Modify the
HeroControllerComponent class
according to the code below:
File Path: /src/HeroControllerComponent.aspackage
{
import com.pblabs.engine.PBE;
import com.pblabs.engine.components.TickedComponent;
import com.pblabs.engine.core.InputKey;
import com.pblabs.engine.entity.PropertyReference;
import flash.geom.Point;
/**
* , «» onTick()
*/
public class HeroControllerComponent extends TickedComponent
{
// ,
public var positionReference:PropertyReference;
public function HeroControllerComponent()
{
}
/**
* , .
*
* @param deltaTime , .
*/
public override function onTick(deltaTime:Number): void
{
//
var position:Point = owner.getProperty(positionReference);
// , «»
if (PBE.isKeyDown(InputKey.RIGHT))
{
//
position.x += 15;
}
// , «»
if (PBE.isKeyDown(InputKey.LEFT))
{
//
position.x -= 15;
}
//
if (position.x > 375)
{
//
position.x = 375;
//
} else if (position.x < -375)
{
//
position.x = -375;
}
//
owner.setProperty(positionReference, position);
}
}
}
* This source code was highlighted with Source Code Highlighter .
Check results
After you compile the flash drive, you will need to see the
.swf file, the contents of which should be similar to the screenshot below:

Conclusion
Congratulations, you have completed lesson 4 and learned how to add reactions to user input.
You can download all the files that were used in the lesson from the link below.
The source archive of the lesson