使用FLEX和Actionscript开发FLASH-2-1


使用FLEX和Actionscript开发FLASH-2-1
2010年10月27日
   我们将添加状态和双缓冲绘制过程。状态,相当不言自明,他们代表了一个程序能处于的不同状态。例如,购物车可能有一个代表浏览商店的状态,还有一个代表查看某个特殊项目的状态,我们的游戏也将有很多状态,其中包括主菜单,本身的游戏游玩,水平总结的结束语,可能还有一个高得分的呈现。
  Flex包括状态的本地支持。状态被设计成从一个GUI(图形用户界面)向另一个GUI的在理念中的转换,他们有我们在不同状态之间转换所需要的功能,固然状态不必一定有任何GUI组件。修改应用程序确当前状态的属性将触发一个状态的改变,通过给与进进状态和退出状态事件有关的函数增加必须的开始和结束代码,我们能够更新内部的游戏状态以达到匹配。
  双缓冲是一种常用的科技,用来消除由于直接画屏幕而产生的视觉割裂。它由于使用两个图像缓冲来绘制终极的图片而得名。一个缓冲位于内存(后台缓存),另一个被显示在屏幕上的缓冲(前台缓冲)
  你可以把后台缓冲当做一种高速暂存存储器,被用来绘制终极的屏幕而创建的一个单独的元素。当一个帧一被画,它就被一个操纵复制到前台缓冲。然后屏幕显示前台缓冲的内容。
  那么就让我们看看在flex中这些概念是如何被实现的。
  main.mxml
  
  
  
  
  
  
  
  
  
  
  
  
  
  首先要留意的事是增加到mx:Application元素的currentState(当前状态)属性。上面已经提到过,应用程序对象确当前状态属性定义了程序确当前状态。通过设置次属性为MainMenu(主菜单)我们可以得出程序以主菜单状态开始。
  我们还增加了一个mx:states元素。这个元素通过子元素mx:State定义了程序能够处于的状态。我们定义了开始的两个状态:MainMenu(主菜单)和Game(游戏)。在主菜单状态,终极用户将看见游戏的开始界面,游戏状态代表了游戏运行它本身。
  两个mx:State元素都有一个名字属性。这个属性是状态的名字,通过把应用程序对象确当前状态改到某个名字,我们能够转换到相应的某个状态。游戏状态还包括另外两个属性:enterState(进进状态)和exitState(退出状态)。通过把函数和事件联系在一起,我们有机会把游戏内部逻辑手工同步到这个状态。就像你能看见的我们使用EnterGame(进进游戏)这个函数来开始GameObjectManager(稍后有此类的更多先容),来设置内部标志inGame为真。inGame标志被用来在绘制循环中答应游戏画屏幕。ExitGame(退出游戏)函数仅仅将inGame设置为假,来显示GUI.
  还记得我怎么提起在flex中状态被设计为理念上GUI的转换。主菜单状态显示这很轻易。mx:AddChild元素被用来为状态增加一个GUI元素。在这种情况下,我们增加一个按钮,玩游戏者能够点击它进进到游戏里面。但是一旦我们离开了主菜单状态,flex将自动地移往这个按钮,而不用多余的代码或者任何努力。
  为了让我们能够绘制屏幕我们增加了mx:Canvas(画布)元素。画布(或者更具体地说:它的画像属性)将在双缓冲绘制过程中起到前台缓冲的作用。后台缓冲存在在GameObjectManager类中。在enterFrame函数里我们调用了GameObjectManager的enterFrame函数,此函数让程序绘制后台缓冲。帧一被画出,我们就取后台缓冲,使用画布的图像属性的clear,beginBitmapFill,drawRect,endFill函数把后台缓冲画到画布上。

猜你喜欢

转载自djjrq21t.iteye.com/blog/1571655
今日推荐