预览模式: 普通 | 列表

As3 设计模式之State模式

把状态作为属性,坦克种类本身只控制状态的变化,具体的行为由状态类定
 

  1. package State {
  2.  
  3. /**
  4. * @author cab
  5. * 坦克状态的接口
  6. */
  7. public interface TankState {
  8. function attack():void;//坦克的攻击方法
  9. }
  10. }
  1. package State {
  2. import State.TankState;
  3.  
  4. /**
  5. * @author cab
  6. * 坦克普通状态
  7. */
  8. public class TankState_Tank implements TankState {
  9. public function attack() : void {
  10. trace("普通状态");
  11. }
  12. }
  13. }
  1. package State {
  2. import State.TankState;
  3.  
  4. /**
  5. * @author cab
  6. * 坦克架起状态
  7. */
  8. public class TankState_Siege implements TankState {
  9. public function attack() : void {
  10. trace("架起状态");
  11. }
  12. }
  13. }
  1. package State {
  2.  
  3. /**
  4. * @author cab
  5. * 坦克
  6. */
  7. public class Tank {
  8. public var state : *;
  9.  
  10. public function Tank() : void {
  11. this.state = new TankState_Tank();//新造出来的坦克当然是普通状态
  12. }
  13.  
  14. /*设置坦克状态*/
  15. public function setState(key : String):void {
  16. switch(key) {
  17. case "s":
  18. this.state = new TankState_Siege();//架起坦克
  19. break;
  20. case "t":
  21. this.state = new TankState_Tank();//普通坦克
  22. break;
  23. }
  24. }
  25. /*坦克攻击方法*/
  26. public function attack():void{
  27. this.state.attack();
  28. }
  29. }
  30. }
  31.  
  1. package State {
  2. import flash.display.Sprite;
  3.  
  4. /**
  5. * @author cab
  6. * 状态模式
  7. */
  8. public class Main extends Sprite {
  9. public function Main() {
  10. var theTank:Tank=new Tank();//新造一辆坦克
  11. theTank.attack();//坦克就以普通模式攻击了
  12. theTank.setState("s");//架起坦克
  13. theTank.attack();//架起模式攻击
  14. }
  15. }
  16. }

总结:状态模式可以将和状态相关的行为和属性封装,除了切换状态时,其它地方就不需要大量的判断当前状态,只要调用当前状态的方法等。

分类:ActionScript | 固定链接 | 评论: 0 | 引用: 0 | 查看次数: 52

As3 设计模式之Flyweight模式

当游戏中坦克变的很多时,如果把每个坦克都作为一个对象是,对系统资源消耗很大 。Flyweight模式可以将需要共享的资源集中起来,统一管理,防止重复消耗

  1. package Flyweight {
  2.  
  3. /**
  4. * @author cab
  5. * 坦克享元
  6. */
  7. public class Tank {
  8. /*绘制坦克*/
  9. public function drawTank():void{
  10. trace("制造坦克");
  11. }
  12. }
  13. }
  1. package Flyweight {
  2.  
  3. /**
  4. * @author cab
  5. * 坦克工厂
  6. */
  7. public class TankFactory {
  8. //享元数组,用于存放多个享元
  9. private var tanks:Object=new Object();
  10. //获取享元的方法
  11. public function getTank(name:String):Tank{
  12. if(tanks[name] == undefined){
  13. tanks[name]=new Tank();
  14. }
  15. return tanks[name];
  16. }
  17. }
  18. }
  1. package Flyweight {
  2. import flash.display.Sprite;
  3.  
  4. /**
  5. * @author cab
  6. * Flyweight享元模式
  7. */
  8. public class Main extends Sprite {
  9. public function Main() {
  10. var tf:TankFactory=new TankFactory();
  11. var t1:Tank=tf.getTank('Tank1');
  12. t1.drawTank();
  13. var t2:Tank=tf.getTank('Tank2');
  14. t2.drawTank();
  15.  
  16. }
  17. }
  18. }

用一个工厂来管理所有的共享的资源,比如坦克工厂,把所有共享的资源的生产全部交给个坦克工厂!

查看更多...

分类:ActionScript | 固定链接 | 评论: 0 | 引用: 0 | 查看次数: 97

在线斗地主

记录一下!
在线斗地主开发已过去1个多星期了,使用as3.0+Fms3+Php+MySql仿QQ游戏开发;具有在线注册,玩家积分机制,文字语音视频聊天等功能,可自由添加房间,每个房间100桌*3椅。

客户端只接受数据,响应操作......
下一步还是考虑换成RED5,扩展方便一些

分类:Flash Game | 固定链接 | 评论: 0 | 引用: 0 | 查看次数: 153

《Learning Flash Media Server 3 》
http://www.oreilly.com/catalog/9780596515904/
搜这本书电子本没有找到,却找了韩国搞FMS 的:http://www.fmskorea.com/,其中还发现了一个Media Server:http://www.wowzamedia.com/

分类:Tags | 固定链接 | 评论: 0 | 引用: 0 | 查看次数: 59

Oregano Server
简介:Oregano Server is a Multiuser Server for Flash Clients. It is written in Java. It is useful for client-server applications that require low latency such as real-time chat systems, shared whiteboard applications or multiuser games that would be difficult to develop with traditional HTTP-based solutions
oregano is on hiatus. It is unlikely that there will be any further releases.
The Client API is available for AS1 and AS2. If you are going to develop in AS3 and/or need features like Video/Audio Streaming and Broadcasting you may want to look at Red5.
又是java写的,重要的是开源的,但功能有限还待完善,客户端支持AS1 and AS2,如果要用as3开发或音视频开发,他推荐用看看RED5,有意思!
 

分类:Flash Game | 固定链接 | 评论: 0 | 引用: 0 | 查看次数: 254

海外的QQ GAME

海外的QQ GAME:http://qqgames.com/,界面要比中国版的游戏大厅好看的多!
其游戏以作为插件绑定在AIM,很明显,要玩QQ Games不需要 qq号,AIM是老美开发的聊天工具,AIM官方网站是http://www.aim.com/
 

分类:Flash Game | 固定链接 | 评论: 0 | 引用: 0 | 查看次数: 55

再次推荐的书

今天中午去书店,进门就看见了熟悉的封面,如下图


原书名为《Actionscript 3.0 Animation -making things move》,由webstudio翻译的书名:《Flash Actionscript 3.0 动画教程》,翻译的质量还行,没有光盘,代码要自己去网上下载,书也不给个下载地址,原英文书下载:http://www.riabook.cn/en_book/foundation_actionscript_3_animation_making_things_move.htm
最下面有源文件的下载地址!其原作者Keith Peters 大家有应该听说过!写过《ActionScript 3.0 Cookbook中文版》这本书也有中文版的出版!
 

分类:Flash Game | 固定链接 | 评论: 0 | 引用: 0 | 查看次数: 148

Fms服务端代码工具

又是java的ide,和flex工具一样,项目地址:http://fczone.com/eclipse/
JAR下载地址:http://fczone.com/getFile?id=FMSProject_1.1.0.0.jar
我已经安装了flex builder 3,所以无须装eclipse,直接拷贝到plugins文件夹下,重启flex builder 3,ok!真是爽!以后再也不用flash来写了,调试又麻烦,又没有代码提示!
下面是开发的录制的调试视频:http://fczone.com/eclipse/demo/debugDemo/index.html
快速入门:http://fczone.com/eclipse/starting/
 

下图是Adobe Flex Builder 3下的target platform最高只支持到fms2.0,但是还是支持fms3,我测试过!

[IMG]http://www.71mao.com/upload/@[J~JK0[R6O@VK[0`)K}M(S.jpg[/IMG]

分类:Tags | 固定链接 | 评论: 0 | 引用: 0 | 查看次数: 72