首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 媒体动画 > flex >

flex游戏发动机(PushButton)-组件运动-自动走的小球

2012-11-23 
flex游戏引擎(PushButton)--组件运动-自动走的小球Lesson3Base.as/*************************************

flex游戏引擎(PushButton)--组件运动-自动走的小球

Lesson3Base.as

/*******************************************************************************
?* PushButton Engine
?* Copyright (C) 2009 PushButton Labs, LLC
?* For more information see http://www.pushbuttonengine.com
?*
?* This file is licensed under the terms of the MIT license, which is included
?* in the License.html file at the root directory of this SDK.

*红色字体为小球的控制组件
?******************************************************************************/

package
{
?import com.pblabs.engine.PBE;
?import com.pblabs.engine.core.*;
?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 Lesson3Base extends Sprite
?{
??public function Lesson3Base()
??{
???PBE.startup(this);??????????????????????????????????????????????? // Start up PBE
???
???createScene();?????????????????????????????????????????????????????? // Set up a simple scene entity
???
???createHero();??????????????????????????????????????????????????????? // Create a simple avatar entity
??}
??
??private function createScene():void
??{
???var sceneView:SceneView = new SceneView();?????????????????????????? // Make the SceneView
???sceneView.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 avatar
???
???var spatial:SimpleSpatialComponent = new SimpleSpatialComponent();?? // Create our spatial component
???
???spatial.position = new Point(-375,-275);???????????????????????????? // Set our hero's spatial position as -375,-275 -- the upper left corner
???spatial.size = new Point(50,50);???????????????????????????????????? // Set our hero's size as 50,50
???spatial.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 object
???render.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 information
???render.positionProperty = new PropertyReference("@Spatial.position");
???// Point the render component to this entity's Spatial component for rotation information
???render.rotationProperty = new PropertyReference("@Spatial.rotation");
???
???hero.addComponent( render, "Render" );?????????????????????????????? // Add our render component to the Hero entity with the name "Render"
???var controller:DemoControllerComponent = new DemoControllerComponent();
???// Point the controller component to this entity's Spatial component for position information
???controller.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"????????
??}
?}
}

DemoControllerComponent.as

package
{
?
?import com.pblabs.engine.components.TickedComponent;

?import com.pblabs.engine.entity.PropertyReference;
?
?import flash.geom.Point;

?// Make a ticked component so that it can update itself every frame with onTick()?

?public class DemoControllerComponent extends TickedComponent

?{
????
??// Keep a property reference to our entity's position.
????
??public var positionReference:PropertyReference;
???
??// Store the direction that our entity is traveling: 1 is to the right, -1 is to the left.
?????
??private var direction:int = 1;???
?????
??// onTick() is called every frame
?
??public override function onTick(tickRate:Number):void
????
??{
?????
???// Copy the owner entity's position into a local Point structure
????
???var position:Point = owner.getProperty(positionReference);
???
???// If we are over the left edge...
?????
???if (position.x < -375) {
???????
????// ...then push ourselves to the right for the time being.
?????????
?????direction = 1;
?????????
????// Move our entity down a notch
???????????
?????if (position.y<280)? position.y += 20;
?????else position.y=-260;
???????
???}
????????
???// If we are over the right edge...
??????
???else if (position.x > 375) {
??????????
????// ...then push ourselves to the left for the time being.
??????????
?????direction = -1;
??????????
????// Move our entity down a notch
???????
?????
?????if (position.y<280)? position.y += 20;
?????else position.y=-260;
????????
???}
??????
???// Move 5 units in the direction that we're headed
???????
????position.x += direction * 10;
????
???// Set the spatial component's position based on our new value
??????
????owner.setProperty(positionReference, position);
?
??}
?
?}
}?



flex游戏发动机(PushButton)-组件运动-自动走的小球
?
?rar附件为fb的工程
?

热点排行