flash控制小球
- 格式:doc
- 大小:33.00 KB
- 文档页数:5
flex游戏引擎(PushButton)--键盘控制组件-移动小球游戏FlexFlashUPUILesson4Base.aspackage{import com.pblabs.engine.PBE;import com.pblabs.engine.entity.*;import com.pblabs.rendering2D.*;import com.pblabs.rendering2D.ui.*;import flash.display.Sprite;import flash.geom.Point;[SWF(width="800", height="600", frameRate="60")]public class Lesson4Base extends Sprite{public function Lesson4Base(){// Start up PBEPBE.startup(this);// Set up a simple scene entitycreateScene();// Create a simple avatar entitycreateHero();}private function createScene():void{var sceneView:SceneView = new SceneView(); // Make the SceneViewsceneView.width = 800;sceneView.height = 600;PBE.initializeScene(sceneView); // This is just a helper function that will set up a basic scene for us}private function createHero():void{var hero:IEntity = allocateEntity(); // Allocate an entity for our hero avatarvar spatial:SimpleSpatialComponent = new SimpleSpatialComponent();// Create our spatial componentspatial.position = new Point(0,0); // Set our hero's spatial position as 0,0spatial.size = new Point(50,50); // Set our hero's size as 50,50spatial.spatialManager = PBE.spatialManager;hero.addComponent( spatial, "Spatial" ); // Add our spatial component to the Hero entity with the name "Spatial"var render:SimpleShapeRenderer = new SimpleShapeRenderer(); // Create a renderer to display our objectrender.fillColor = 0x0000FF0;render.isCircle = true;render.radius = 25;render.lineSize = 2;render.lineColor = 0x000000;render.scene = PBE.scene; // Set which scene this is a part of// Point the render component to this entity's Spatial component for position informationrender.positionProperty = new PropertyReference("@Spatial.position");// Point the render component to this entity's Spatial component for rotation informationrender.rotationProperty = new PropertyReference("@Spatial.rotation");hero.addComponent( render, "Render" ); // Add our render component to the Hero entity with the name "Render"// Create an instance of our hero controller componentvar controller:HeroControllerComponent = new HeroControllerComponent();// Point the controller component to this entity's Spatial component for position informationcontroller.positionReference = new PropertyReference("@Spatial.position");// Add the demo controller component to the Hero entity with the name "Controller"hero.addComponent( controller, "Controller" );hero.initialize("Hero"); // Register the entity with PBE under the name "Hero"}}}HeroControllerComponent.aspackage{import com.pblabs.engine.PBE;import ponents.TickedComponent;import com.pblabs.engine.entity.PropertyReference;import com.pblabs.engine.core.InputKey;import flash.geom.Point;// Make a ticked component so that it can update itself every frame with onTick()public class HeroControllerComponent extends TickedComponent{// Keep a property reference to our entity's position.public var positionReference:PropertyReference;// onTick() is called every framepublic override function onTick(tickRate:Number):void{var position:Point = owner.getProperty(positionReference);// Look at our input keys to see which direction we should move. Left is -x, right is +x.if (PBE.isKeyDown(InputKey.RIGHT)){// Move our hero to the rightposition.x += 15;}if (PBE.isKeyDown(InputKey.LEFT)){// Move our hero to the left}if (PBE.isKeyDown(InputKey.UP)){// Move our hero to the rightposition.y -= 15;}if (PBE.isKeyDown(InputKey.DOWN)){// Move our hero to the leftposition.y += 15;}// Finally, add some boundary limits so that we don't go off the edge of the screen.30.if (position.x > 375){// Set our position at the wall edgeposition.x = 375;}else if (position.x < -375){// Set our position at the wall edgeposition.x = -375;}{// Set our position at the wall edgeposition.y = 260;}else if (position.y < -260){// Set our position at the wall edgeposition.y = -260;}// Send our manipulated spatial variables back to the spatial manager owner.setProperty(positionReference, position);}}}。