您的位置:首页 > 其它

PushButton引擎学习笔记2

2010-03-31 11:43 363 查看
(此文为转载,原出处不详,而由于某种原因只通过CSDN的BLOG在不同地点不同网域共享信息,如有不妥请告知,抱歉)
上一篇用PBE在舞台上画了一个矩形,今天我们来让该矩形动起来。
1,大概思路:编写一个能控制该矩形动的component,然后将该component关联到该矩形上;
2,编写自定义的component。可继承的component有AnimatedComponent, BasicSpatialManager2D, Box2DManagerComponent, Box2DSpatialComponent, DataComponent, EventSoundTrigger, GoogleSpreadsheetTweaker, GroupManagerComponent, GroupMemberComponent, HealthComponent, MachineDescription, MultiSpriteSheetHelper, SpriteContainerComponent, ThinkingComponent, TickedComponent,而这些都是继承EntityComponent的,EntityComponent是所有component类的基类。这里我们要改变矩形的坐标位置,选择继承自TickedComponent,文档中对TickedComponent类的解释是:需要每一个tick都表现状态的组件的基类,用Flash的话说,就是需要每一帧去表现其不同形态、位置、大小等的基类。
package
{
import
com.pblabs.engine.components.TickedComponent;
import
com.pblabs.engine.entity.PropertyReference;
import flash.geom.Point;

import com.hexagonstar.util.debug.Debug;
/**
* ...
* @author
luoyuqiang
*/
public class DemoControllerComponent extends
TickedComponent
{
//保存对矩形的Spatial组件中的position属性的引用

public var positionReference:PropertyReference = new
PropertyReference("@Spatial.position");
//方向变量
private var
direction:int = 1;
// 每一帧运行一次onTick()
public override
function onTick(tickRate:Number):void
{
try {
var
position:Point = owner.getProperty(positionReference) as Point;

//是否到最左边
if (position.x <=-300) {
direction =
1;
position.y += 20;
}
//是否到最右边
else if (position.x
>=300) {
direction = -1;
position.y += 20;
}

position.x += direction * 5;
owner.setProperty(positionReference,
position);
}catch (err:Error) {
Debug.trace(err.message)

}
}
}
}
跟前一篇的代码结合起来,将得到从上至下、从左到右或从右到左循环移动的矩形。
总结:关键是理解组件在PBE中起到的作用,以及其跟Entity的关系,和获取、设置Entity组件里属性的方法。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: