Flex和Actionscript开发Flash游戏1

在家上网赚钱更容易

在该系列的第一篇文章中,我们创建了Flex程序类。这一部分,我们将加上一些states和一个双缓冲渲染流 程。 States就如同它自己的名字那样去解释:它表示一个程序所包含的所有状态。

  在该系列的第一篇文章中,我们创建了Flex程序类。这一部分,我们将加上一些states和一个双缓冲渲染流程。

States就 如同它自己的名字那样去解释:它表示一个程序所包含的所有状态。例如:一个在线商店会拥有一个状态让顾客浏览商店,还有一个状态查看某一特定商品的详细内 容。我们的游戏也拥有一些状态,包含:主菜单、游戏自身、关底信息以及一个排行榜。

Flex自身支持多状态(states)。这些状态之间可 以相互变化,并伴随着变化动画。但是状态的变化也离不开程序员设置不同状态间功能的变更,这种变化并不必须依赖于用户界面的变化。修改 Application的currentState属性将导致状态的转变,同时为enterState和exitState两个事件编写相应的方法,我们 就可以更新游戏内部相应的各状态了。

双缓冲是一种用于避免程序直接绘制到屏幕产生画面不连贯的技术。正如它的名字一样,它采用两个绘制缓冲空 间来绘制最终图像:一个久驻内存的后置缓冲和一个用于屏幕显示的前置缓冲。你可以这样理解,后置缓冲是一个草稿画板,你可以在上面绘制独立的元素来组成最 终的场景。一旦一帧画面在后置缓冲区中绘制完成,它就将图像拷贝的前置缓冲区中,然后屏幕显示前置缓冲区中的内容。

接下来我们看看这个概念在 Flex中如何实现。

main.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="btnStart" 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>

在家上网赚钱更容易

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值