在家上网赚钱更容易
复 制代码首先要注意currentState属性的加入。正如前面说过的,currentState属性定义了当前程序的状态(state)。我们将 currentState设置为MainMenu,表示程序是由MainMenu状态开始的。
我们同样加入了mx:States元素。这个元素定 义了程序所包含的所有子状态。这里我们定义了MainMenu和Game两种状态。在MainMenu状态中,最终用户将看到开始界面。而Game状态表 示游戏本身。
这两个mx:State都拥有name属性。改变currentState属性的值,我们就可以完成状态之间的切换。Game状态包 含了enterState和exitState两个事件。我们可以使用为这两个事件添加响应函数的方法来手工“同步”游戏内部逻辑。你看到,我们使用 EnterGame函数来启动GameObjectManager(之后将提到)实例,并且设置内部标志inGame为true。这个标志在游戏渲染循环 中使用,表示是否需要将游戏画面渲染到屏幕。ExitGame方法简单的将inGame标志设置为false,使用户界面不可见。
记得我提到过 Flex中的各种状态可以进行切换?MainMenu状态展示了其简单的实现方法。mx:AddChild节点用于添加图形界面元素。在这里,我们添加一 个按钮,使用户可以点击进入游戏。当我们离开MainMenu状态时,Flex会自动移除按钮而不需要任何其它代码和设置。
为了将画面渲染到屏 幕,我们添加一个mx:Canvas元素。canvas(更具体的说是它的graphics属性)充当了双缓冲渲染流程中前置缓冲的角色。后置缓冲存在于 GameObjectManager类中。在enterFrame函数中,我们调用GameObjectManager中的enterFrame方法,该 方法允许将画面绘制到后置缓冲区中。每当一帧绘制完毕,我们使用canvas中graphics对象的clear, beginBitmapFill, drawRect和endFill方法将其绘制到canvas上。
GameObjectManager.as package
{
import mx.core.*;
import mx.collections.*;
import flash.display.*;
public class GameObjectManager
{
// double buffer
public var backBuffer:BitmapData;
// colour to use to clear backbuffer with
public var clearColor:uint = 0xFF0043AB;
/// static instance
protected static var instance:GameObjectManager = null;
// the last frame time
protected var lastFrame:Date;
static public function get Instance():GameObjectManager
{
if ( instance == 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 Date();
}
public function shutdown():void
{
}
public function enterFrame():void
{
// Calculate the time since the last frame
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);
}
}
}
复制代码GameObjectManager对象承担着管理各种游戏元素的责任,包括 敌人,玩家和各种背景元素。它也决定着后置缓冲区中哪些元素需要进行绘制。如果你记得前置缓冲器是由canvas元素实现的,最简单的方式就是将 canvas作为一个Application的子节点直接加入。后置缓冲区由BitmapData对象实现,这样我们可以快速直接的操作像素来绘制最终图 像。
clearColor属性设置的颜色表示用于在场景建立好之前,清除后置缓冲区的颜色。最终整个后置缓冲区将会被游戏元素覆写,使得 clearColor完全不相关,但是目前它非常重要,因为它将建立一块最终帧。0xFF0043AB代表深蓝色。前两位代表alpha值,后6位代表红 绿蓝值。
静态的instance属性用于实现单件模式。我们的程序中只需要一个GameObjectManager实例,引用这个静态的属性将保 证我们只会创建一个GameObjectManager实例。单件模式是程序设计范例中非常常见,尽管Actionscript不支持protected 构造函数,但是单件模式依然十分有用(一旦你看到instance属性,这个类很可能就是按照单件模式设计的)。
lastFrame属性存储了最 后帧渲染完毕的时间。跟踪这个时间,我们就可以知道最后一帧于当前帧之间的时间间隔,使得我们可以以此更新游戏元素。尽管目前我们没有任何游戏元素,在 enterFrame方法中,我们计算了帧于帧之间的时间。lastFrame时间就是在调用startup时被重置。这是由于当整个游戏不在Game state状态下时,GameObjectManager并不更新。如果我们不重置lastFrame,下一关的第一帧将等于玩家在关间菜单所花的时间。 最好要避免玩家在第一帧时终止退出。
所以,我们做了些什么呢?为了实现各种状态,我们创建了主菜单画面,可以使用按钮进入游戏。游戏中我们实现了 双缓冲模型,可以绘制一个蓝色背景。接下来,我们就会开始做有趣的事情了,在屏幕上绘制一些东西。
在家上网赚钱更容易
分享到:
相关推荐
文件如“FLEX和Actionscript开发FLASH游戏1.doc”和“FLEX和Actionscript开发FLASH游戏2.doc”可能涵盖了这些基础概念。 三、ActionScript 3.0编程 1. 类和对象:AS3.0强化了面向对象编程,通过类定义游戏对象,如...
在开发Flash游戏的过程中,FLEX和ActionScript是两个至关重要的技术。FLEX是一个开放源代码的框架,主要用于构建富互联网应用程序(RIA),而ActionScript是Adobe Flash平台中的编程语言,用于控制动画、交互性和...
【使用FLEX和ACTIONSCRIPT开发FLASH游戏】 在开发FLASH游戏时,FLEX和ACTIONSCRIPT是两个重要的技术。FLEX是一个开放源代码的框架,用于构建富互联网应用(RIA),而ACTIONSCRIPT是Adobe Flash环境中用于创建交互性...
**学习资源与源代码**:提供的"Flex和Actionscript开发FLASH游戏"压缩包可能包含教材、示例项目和源代码,这些都是学习和实践的好材料。通过分析源代码,可以深入理解如何将FLEX和ActionScript结合应用于实际游戏...
3. **Flash游戏开发**:使用FLEX和ActionScript开发Flash游戏,开发者可以利用丰富的图形库、音频处理和动画工具,创建各种类型的游戏,如2D平台游戏、益智游戏、射击游戏等。ActionScript提供了强大的游戏循环机制...
在本篇教程中,我们将继续深入探讨如何使用FLEX和ActionScript开发FLASH游戏,特别是引入了状态管理和双缓冲绘制技术。这两个技术对于构建流畅、高效的游戏体验至关重要。 首先,我们来了解一下状态管理。在游戏...
### 使用FLEX和ActionScript开发FLASH游戏:位图动画 #### 概述 在本章节中,我们将深入了解如何使用FLEX和ActionScript来开发Flash游戏中的位图动画。位图动画是通过一系列图像序列来创建动态效果的一种技术,...
在本篇教程中,我们将继续深入探讨如何使用FLEX和ActionScript开发Flash游戏。在上一部分,我们学会了在屏幕上绘制图形。现在,我们将使游戏更具交互性,添加鼠标输入功能,以及创建动态背景,使玩家的飞船能在其中...
总的来说,使用FLEX和ActionScript开发Flash游戏涉及到许多核心概念,如图形渲染、时间管理、游戏对象的生命周期管理和状态维护。理解并熟练应用这些概念是创建动态、交互式游戏的关键。通过`GameObjectManager`类,...
在这一部分中,我们将深入探讨如何使用FLEX和Actionscript开发FLASH游戏,特别是关于增加敌机和游戏者的武器。在前四部分的学习中,我们已经构建了基础的游戏框架,包括用户输入和滚动背景。现在,我们将利用已有的...
在使用FLEX和Actionscript开发FLASH游戏的过程中,创建和管理游戏级别是非常关键的一环。本文主要探讨了如何通过这两种技术来构建一个结构化的级别系统,让开发者能够更好地控制游戏流程。 首先,文章提出了一个...
使用FLEX和Actionscript开发FLASH游戏,涉及到的技术主要集中在面向对象编程、图形处理和资源管理等方面。在本示例中,我们将关注如何创建动态游戏元素以及如何有效地管理游戏资源。 首先,`Bounce`类是一个扩展自`...
总结来说,使用FLEX和ActionScript开发Flash游戏,你需要理解游戏对象的结构和生命周期管理,以及如何实现基本的碰撞检测机制。通过编写和优化这些功能,可以创建出丰富、互动性强的Flash游戏。
在使用FLEX和Actionscript开发FLASH游戏的过程中,平铺式背景渲染是一种常见的技术,用于创建无限滚动或大范围的游戏背景。以下将详细解释这个技术及其关键组成部分。 首先,`TiledBackground` 类是专为创建平铺...
总之,使用FLEX和Actionscript开发Flash游戏时,平铺式背景是一个高效且实用的技术,它允许开发者创建出广阔的游戏世界,同时保持游戏的流畅性和资源效率。通过精心设计的类和编辑工具,我们可以轻松管理游戏的背景...
### 使用FLEX和ActionScript开发FLASH游戏:音乐与声效管理 #### 一、引言 在本章节中,我们将深入探讨如何使用Flex和ActionScript技术来开发Flash游戏中的音乐和声效部分。通过分析提供的代码片段,我们将了解如何...
总结来说,在使用FLEX和ActionScript开发Flash游戏时,通过`ResourceManager`管理资源,利用`Embed`元标签嵌入音频和视频,再结合`flash.media`包中的类进行播放控制,能够轻松地实现音乐和声效的集成。这样,你的...
总结来说,使用FLEX和ActionScript开发Flash游戏时,`GameObject`类提供了一个基础结构,可以方便地扩展以创建各种游戏对象。通过处理鼠标事件,我们可以实现玩家与游戏的深度交互,让游戏更加生动有趣。在实际开发...
在使用FLEX和Actionscript开发FLASH游戏的过程中,创建和管理游戏关卡是至关重要的部分。在提供的代码中,我们看到一个名为`LevelDefinitions`的类,这个类是用于定义和管理游戏的不同级别。以下是该类的主要知识点...
在本篇关于使用FLEX和Actionscript开发FLASH游戏的文章中,我们将专注于游戏对象管理器(GameObjectManager)的实现,特别是碰撞检测这一关键功能。GameObjectManager是游戏引擎的核心组件,负责处理游戏对象的生命...