学习总结

PushButton引擎是一个模块化的游戏引擎,也就是说它提供了许多游戏开发中的通用组件来为开发者服务;让你通过组件帮助你很快的构建你的游戏。因为组件都是基于一致的接口,游戏只需要很简单的组织他们 就可以了。

1       

游戏当中的角色,宝物等等所有一切都是实体。所有pushbutton 开发的游戏,是又一堆组建拼凑起来的。

创建一个实体方法很简单:

var hero:Entity = new Entity () ;

hero.initialize("Hero");

每个实体都要有个名字,实体之间的调用都是通过名字关联。

2        组件

每个实体是由多个组件组成。一个实体大概有三部分组成。位置组件,显示组件,控制组件

2.1位置组件:

var spatial:SimpleSpatialComponent = new SimpleSpatialComponent();    

spatial.position = new Point(-375,-275);                         

spatial.size = new Point(50,50);                                  

spatial.spatialManager = PBE.spatialManager;

2.2显示组件:

var render :SpriteRenderer = new SpriteRenderer () ;

render.fileName = "../assets/ball.png"

2.3控制组件

var controller:HeroControllerComponent = new HeroControllerComponent();

这样一个实体的组件基本上创建完成,当然还需要设置一些属性。接下来需要把这些组件附到实体上面。

hero.addComponent(spatial, "spatial" );

hero.addComponent(render, "render" );

hero.addComponent(controller, "controller");

其实说白了就是组合,每个类来实现一个功能,每个组件都需name,Pushbutton 提供了很多默认的组件:如SimpleSpatialComponent, SpriteRenderer等等,也可以自定义组件,继承EntityComponent就可以

3        组件之间通信

组件之间互访有三种方法 ,属性 ,事件,直接访问

3.1属性

在组件之间共享数据的最佳方式是通过属性。因为它们在编译时不需要任何的组件之间的依赖。实例如下:

class TestComponent extends EntityComponent {
   public var aProperty:String = "Hello!";
}

假设上面组件取名为Test,其他组件可以如下访问:
var value:String = owner.getProperty(new PropertyReference("@Test.aProperty")) as String;

假设aProperty是一个点(Point)。你可以做以下几点:

var xPosition:Number = owner.getProperty(new PropertyReference ("@Test.aProperty.x") as Number;

3.2 事件

每IEntity公开了标准Flash的EventDispatcher,所以很容易调度和监听事件。主要是通过owner.eventDispatcher监听和派发事件。

class TestComponent extends EntityComponent{
   static public const SOME_ACTION:String = "SomeAction";
   public function SomeActionHappens():void{
      owner.eventDispatcher.dispatchEvent(new Event(SOME_ACTION));
   }
}

其它组件可以监听上面事件
class TestListenerComponent extends EntityComponent{


   protected function onAdd():void{
      owner.eventDispatcher.addEventListener(

TestComponent.SOME_ACTION, _EventHandler);
   }
   
   private function _EventHandler(e:Event):void{
      trace("Got an event!");
   }
   
   protected function onRemove():void{
      owner.eventDispatcher.removeEventListener(TestComponent.SOME_ACTION, _EventHandler);
   }
}

 

3.3直接访问

PB提供了如下三个方法,

lookupComponentByName 通过组件名称

lookupComponentByType  通过类型

lookupComponentsByType 返回list

4        XML组装实体

组件的初始化可以用xml配置文件管理,类似spring。用PB的TemplateManager能够实例

化以下种型。entity , templates, components, group

4.1 Entities

<entity name="Box2D">

<component type="com.pblabs.box2D.Box2DManagerComponent"name="Manager">

</component>

<component type="com.pblabs.box2D.Box2DDebugComponent" name="Debug">

<Scene componentReference="Scene"/>

</component>

</entity>

4.2 Templates

模板的构建和实体是一样的,同样包含template标签。和实体的唯一的区别是:模板是需要用NameManager管理的。模板可以创建很多实 例,而实体只能构建一个实例。

4.3 Components

组建标签被包含在template和entity标签当中和描述一个组件。

4.4 Groups:

是一系列的templates、entities、groups.他们会在group被实例化的时候也被实例化。例如,如果定义有两个子标签“MyFirstEntity”和“MySecondEntity”,实例化group将实例化这两个实例。

5        动画

看过几个类似的引擎,动画的原理大概如下:

把多动作放在一张图上面,程序运行时,计算里面小图的坐标信息,而生成相应的动画。类似于CSS SPRITE

PB 里面提供了操作此功能相关的类。

如:CellCountDivider 用于切割图片,SpriteSheetRenderer : 用于显示动画

6        PB总结

给我感觉比较繁琐,每个对象都需要编写大量的代码。

采用继承方式虽然复杂些,但可以提供很实用的超类,但是每个元件绑定一个类,这样结构也比较清晰,开发效率高。

7        服务端

可选择:Fms,Red5,Smartfoxserver。个人感觉用tomcat + red5组合还不错。

Tomcat 处理web请求,red5 处理即时请求。

8        FaceBook API 接口

大概以下几个部分:

8.1 FBML(一个基于HTML语言规范的FB原创的标记语言),

<fb:dashboard>

<fb:help href="help.php">Application Help</fb:help>

</fb:dashboard>

8.2应用程序接口(可以从FB存取数据的接口),总过有八大类

a)         用户的基本帐户权限查询.

b)        新闻提交新闻RSS种子方法.

c)        提供查询用户的朋友的多方面查询方法.

d)        提供向用户发送站内信息方法.

e)         允许你在用户信息中设置[符合FBML语法的代码].

f)         提供用户信息(用户是否登录/详细的个人信息等).

g)        提供登录群组的方法

h)        提供与相册结合的方法

8.3 FQL(类似SQL语法的数据库查询语言),

SELECT name, pic

FROM user

WHERE uid = 7608007JSTL

8.4 Facebook JavaScript

<a href="#" οnclick="new Dialog().showMessage('Dialog', 'This is the help message

for this link');return false">Show Dialog Box</a>

 

8.5 Client Libraries

提供了 多种语言的库。As,php 等等

9        开发步骤

9.1 创建一个facebook账号

9.2 准备一台服务器

9.3 下载客户端开发包

9.4 加入开发运用

打开链接http://www.facebook.com/developers 点击 set Up new Application

2 对应用简单的配置

Callback url : 是应用的域名

Canvas page url: facebook设定的url

流程分析

测试

http://developer.facebook.com/tools.php

10  Flixe引擎

特点:

带有粒子系统和特效系统

对流式音乐和循环音乐进行控制

进度存储,数学函数和碰撞检查

FlxGame和FlxG 两个最核心的类

FlxGame:程序主入口文件,需要继承它并修改些参数。

FlxG:用来控制游戏中的关键要素,如用户按键控制,背景的移动,声音控制。

其他类介绍:

FlxState :游戏状态管理。

是一种容器,用来放置所有游戏元素,如菜单,英雄,敌人,按钮等,FlxG中有状态切换方法。

FlxSprite:多用途的类,包含动画,移动,模拟重力,碰撞检查,可以受伤或者死亡,我们可以用它来创建角色,或者敌人。

典型的Flixel体系结构如下:

FlxGame

FlxG

FlxState

FlxSprite

主要区别

Pushbutton :实体可以添加多个组件,开发围绕着组件。

Fixel :继承,简单的继承就可以实现很多复杂的功能。

11   总结

咱们做的SNS游戏的,不是那么复杂,如果使用这些引擎,可能会增加很多无用的代码。

可以参考以上引擎,开发适我们公司的引擎。

pushbutton flash 游戏开发相关推荐

  1. Flash游戏开发实战(一)

    我不得不承认,我不是植物大战僵尸的骨灰玩家,所以,如果你发现这个系列的教程有什么地方错误的,请告诉我. 定义游戏的主要结构 植物大战僵给了我们很好的视觉和感觉上的享受.你得保护你的房子以免被吃脑的僵尸 ...

  2. 非常详细的flash游戏开发教程.

    一直对这个很有兴趣~ 但是时间有限,而且..对那些算法有些恐惧. 记录一个非常棒的教程的地址:http://www.tonypa.pri.ee/tbw/start.html   共30篇 网友的翻译 ...

  3. 使用FLEX 和 Actionscript开发FLASH 游戏(一)

    使用FLEX 和 Actionscript开发FLASH 游戏 开始 本系列包括1至10部分:使用FLEX开发游戏 写自Matthew Casperson Casperson 2008年10月31日出 ...

  4. Flash 联网游戏开发基础课程

    最新提示: A 课程 4月3号开始.课程刚刚开始... 课程主要教授AS3面向对象编程知识以及Flex开发环境.[适合的人群]适合那些还没有足够AS3编程经验以及不熟悉面向对象方式编程的开发者,比如: ...

  5. 游戏机简史_Flash在线游戏开发-简史

    游戏机简史 This is the first of two articles that will outline a little of what you can do in the realms ...

  6. 开源Flash游戏引擎PushButton Engine

    介绍开源Flash游戏引擎PushButton Engine  最近,一个开源 的Flash游戏引擎PushButton引擎发布了,与以往的游戏引擎不同的是,这是一个模块化的游戏引擎,也就是说它提供了 ...

  7. 使用Flash Builder 4.5进行多平台游戏开发

    转自:使用Flash Builder 4.5进行多平台游戏开发 目录 设置新项目 配置移动平台 优化技巧和诀窍 提交应用程序 延伸阅读 需求 预备知识 要求拥有使用Flash Builder开发项目的 ...

  8. Flash分模块开发,Flash分模块加载,以及使用Flex经行游戏开发!

    目前我主要使用的flash,ActionScript开发IDE为:Flex builder3/4,Flash CS3/4,FlashDevelop3. 一个游戏项目:如果不分模块开发,一个主程序会是相 ...

  9. Flash As3.0 游戏开发小结

    转自: http://blog.csdn.net/chongtianfeiyu/article/details/8096446 ActionScript3.0(以下简称AS3.0)开发flash游戏目 ...

  10. 使用FLEX和Actionscript开发FLASH 游戏-碰撞检测

    在第五部分我们增加了一些敌机而且给游戏者增加了武器使它能射击.在第六部分我们将增加碰撞检测来允许游戏者确实能够击落敌机. 碰撞检测是当两个对象碰撞时能够检测到,然后正确地反应.在第五部分我们给游戏者射 ...

最新文章

  1. @autowired注解_品Spring:对@Autowired和@Value注解的处理方法(文末附spring系列资源合集)...
  2. 【Android】Mac Android adb 配置
  3. linux下使用idl生成h文件,LINIUX下IDL的安装
  4. linux文件系统启动流程,linux 内核启动过程以及挂载android 根文件系统的过程
  5. wxWidgets:滚动窗口
  6. python和log有啥区别_细说 Python logging
  7. Javascript 面向对象编程
  8. 东航期货行情接口和交易接口(20190509)
  9. js数字格式化千分位格式
  10. matlab 多项式画图,matlab多项式画图
  11. 网络规划设计师水平考试备考资料(11.分析总结)
  12. 手把手教学暴力破解WIFI密码(仅供学习交流)
  13. 微信网页开发调试的一些方法
  14. 兔子数列规律怎么讲_“兔子数列”的秘密
  15. 【课程设计】 推箱子游戏(源码+详解)
  16. docker在centos7中run时遇到的坑?
  17. 翻译go项目代码英文注释
  18. 一元多项式因式分解的唯一性定理
  19. IT桔子分布式项目2
  20. 基于Android9.0,了解启动流程

热门文章

  1. yolov3选取正负样本
  2. Unity3D开发之画墙、地面分割(户型绘制)
  3. Origin: 散点图+拟合置信区间
  4. 新疆大学计算机对口支援高校,北大清华领衔对口支援,西藏大学和新疆大学谁的阵容更强大?...
  5. 软件项目开发与管理(单代号网络图参考例题)
  6. 在IntelliJ IDEA下编辑jspx文件(转)
  7. NETCTOSS代码实现第二版
  8. CCA算法 matlab,典型相关分析(CCA)附算法应用及程序
  9. 2020年物联网平台调研报告
  10. AI智能双标题插件+内容伪原创插件集成