Jul
13
Flash在这个时代可以说是最佳的WEB富媒体解决方案
1,表现力极强(当然,那些说flash能做到的js也能做到的人除外,因为这个说法太无知了)
2,跨平台性(没有什么操作平台不支持的,微软的“淫 光”还是需要做出对.net的割舍才行,目前在谷歌浏览器的版本还在公测中,期待)
3,B/S结构下的C/S(好处也有坏处也有,目前天朝的网络环境太落后了,区域性差别过大,在上海随便找个KFC打开笔记本上网的速度都比,白帝城的8M电信都要快,3G就算了,那玩意掉线很令人恼火,而且我还是坐在家里。服务器更新客户端,即可完成更新。一次� 载,以后快速运行。而JS还需要重新对脚本解释。)
4,OOP(flash中的脚本升级到as3.0后带来了OOP,想到什么就能做到什么。起初我已经把大话2逐步搬到了flash。个人的BearBox还在完善中,这是一种游戏编辑器,目前还只有一个地图编辑器)
5,和各种编程语言的紧密结合(dotnet、java、php……几乎主流的都有相应的方法)
6,强大的流媒体服务管理器(FMS、RED5、SFS除FMS等 所不能外其它都还需要自己编写点东西)
用flash编写web网游的好处已经举了些,其实上述内容都是废话
我们将选用flash的框架flex来完成整个游戏的架子,虽然有很多的第三方控件可用,但是目前来说,我不觉得他们好在哪里。
本次就来介绍登录部分的结构
/*-----------------------------------登录界面----------------------------------*/
Login.mxml
/*-----------------------------------代码部分----------------------------------*/
enterState(进入状态)
exitState(退出状态)
EnterGame(进入游戏)
ExitGame(退出游戏)
GameObjectManager.as
/*-----------------------------------代码部分----------------------------------*/
1,表现力极强(当然,那些说flash能做到的js也能做到的人除外,因为这个说法太无知了)
2,跨平台性(没有什么操作平台不支持的,微软的“淫 光”还是需要做出对.net的割舍才行,目前在谷歌浏览器的版本还在公测中,期待)
3,B/S结构下的C/S(好处也有坏处也有,目前天朝的网络环境太落后了,区域性差别过大,在上海随便找个KFC打开笔记本上网的速度都比,白帝城的8M电信都要快,3G就算了,那玩意掉线很令人恼火,而且我还是坐在家里。服务器更新客户端,即可完成更新。一次� 载,以后快速运行。而JS还需要重新对脚本解释。)
4,OOP(flash中的脚本升级到as3.0后带来了OOP,想到什么就能做到什么。起初我已经把大话2逐步搬到了flash。个人的BearBox还在完善中,这是一种游戏编辑器,目前还只有一个地图编辑器)
5,和各种编程语言的紧密结合(dotnet、java、php……几乎主流的都有相应的方法)
6,强大的流媒体服务管理器(FMS、RED5、SFS除FMS等 所不能外其它都还需要自己编写点东西)
用flash编写web网游的好处已经举了些,其实上述内容都是废话
我们将选用flash的框架flex来完成整个游戏的架子,虽然有很多的第三方控件可用,但是目前来说,我不觉得他们好在哪里。
本次就来介绍登录部分的结构
/*-----------------------------------登录界面----------------------------------*/
Login.mxml
/*-----------------------------------代码部分----------------------------------*/
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" width="600" height="400" frameRate="100" creationComplete="creationComplete()" enterFrame="enterFrame(event)" currentState="MainMenu">
<mx:states>
<mx:State
name="Game"
enterState="enterGame(event)"
exitState="exitGame(event)">
</mx:State>
<mx:State name="MainMenu">
<mx:AddChild relativeTo="{myCanvas}" position="lastChild">
<mx:Button x="525" y="368" label="Start" id="btn Start" click="startGameClicked(event)"/>
</mx:AddChild>
</mx:State>
</mx:states>
<mx:Canvas x="0" y="0" width="100%" height="100%" id="myCanvas"/>
<mx:Script>
<![CDATA[
protected var inGame:Boolean = false;
public function creationComplete():void
{
}
public function enterFrame(event:Event):void
{
if(inGame)
{
GameObjectManager.Instance.enterFrame();
myCanvas.graphics.clear();
myCanvas.graphics.beginBitmapFill(GameObjectManager.Instance.backBuffer,null,false,false);
myCanvas.graphics.drawRect(0,0,this.width,this.height);
myCanvas.graphics.endFill();
}
}
protected function startGameClicked(event.Event):void
{
currentState="Game"
}
protected function enterGame(event:Event):void
{
GameObjectManager.Instance.startup();
inGame=true;
}
protected function exitGame(event:Event):void
{
inGame=false;
}
]]>
</mx:Script>
</mx:Application>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" width="600" height="400" frameRate="100" creationComplete="creationComplete()" enterFrame="enterFrame(event)" currentState="MainMenu">
<mx:states>
<mx:State
name="Game"
enterState="enterGame(event)"
exitState="exitGame(event)">
</mx:State>
<mx:State name="MainMenu">
<mx:AddChild relativeTo="{myCanvas}" position="lastChild">
<mx:Button x="525" y="368" label="Start" id="btn Start" click="startGameClicked(event)"/>
</mx:AddChild>
</mx:State>
</mx:states>
<mx:Canvas x="0" y="0" width="100%" height="100%" id="myCanvas"/>
<mx:Script>
<![CDATA[
protected var inGame:Boolean = false;
public function creationComplete():void
{
}
public function enterFrame(event:Event):void
{
if(inGame)
{
GameObjectManager.Instance.enterFrame();
myCanvas.graphics.clear();
myCanvas.graphics.beginBitmapFill(GameObjectManager.Instance.backBuffer,null,false,false);
myCanvas.graphics.drawRect(0,0,this.width,this.height);
myCanvas.graphics.endFill();
}
}
protected function startGameClicked(event.Event):void
{
currentState="Game"
}
protected function enterGame(event:Event):void
{
GameObjectManager.Instance.startup();
inGame=true;
}
protected function exitGame(event:Event):void
{
inGame=false;
}
]]>
</mx:Script>
</mx:Application>
enterState(进入状态)
exitState(退出状态)
EnterGame(进入游戏)
ExitGame(退出游戏)
GameObjectManager.as
/*-----------------------------------代码部分----------------------------------*/
Package
{
import mx.core.*;
import mx.collections.*;
import flash.display.*;
public class GameObjectManager
{
public var backBuffer:BitmapData;
public var clearColor:uint=0xFF0043AB;
protected statci var instance:GameObjectManager = null;
protected var lastFrame:Date;
static public function get Instance():GameObjectManager
{
if(instacne == null)
instance = new GameObjectManager();
return instance;
}
public function GameObjectManager()
{
if(instance != null)
throw new Error("Only one Singleton instance should be instantiated");
backBuffer = new BitmapData(Application.application.width,Application.application.height,false);
}
public function startup():void
{
lastFrame = new Data();
}
public function shutdown():void
{
}
public function enterFrame():void
{
var thisFrame:Date=new Date();
var seconds:Number=(thisFrame.getTime()-lastFrame.getTime())/1000.0;
lastFrame = thisFrame;
drawObjects();
}
protected function drawObjects():void
{
backBuffer.fillRect(backBuffer.rect,clearColor);
}
}
}
{
import mx.core.*;
import mx.collections.*;
import flash.display.*;
public class GameObjectManager
{
public var backBuffer:BitmapData;
public var clearColor:uint=0xFF0043AB;
protected statci var instance:GameObjectManager = null;
protected var lastFrame:Date;
static public function get Instance():GameObjectManager
{
if(instacne == null)
instance = new GameObjectManager();
return instance;
}
public function GameObjectManager()
{
if(instance != null)
throw new Error("Only one Singleton instance should be instantiated");
backBuffer = new BitmapData(Application.application.width,Application.application.height,false);
}
public function startup():void
{
lastFrame = new Data();
}
public function shutdown():void
{
}
public function enterFrame():void
{
var thisFrame:Date=new Date();
var seconds:Number=(thisFrame.getTime()-lastFrame.getTime())/1000.0;
lastFrame = thisFrame;
drawObjects();
}
protected function drawObjects():void
{
backBuffer.fillRect(backBuffer.rect,clearColor);
}
}
}



一种看来的游戏地图算法
webgame进度(多人
