`

Flex和Actionscript开发Flash游戏2

阅读更多

在家上网赚钱更容易

复 制代码首先要注意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游戏.rar

    文件如“FLEX和Actionscript开发FLASH游戏1.doc”和“FLEX和Actionscript开发FLASH游戏2.doc”可能涵盖了这些基础概念。 三、ActionScript 3.0编程 1. 类和对象:AS3.0强化了面向对象编程,通过类定义游戏对象,如...

    FLEX和Actionscript开发FLASH游戏 flash游戏开发文档

    在开发Flash游戏的过程中,FLEX和ActionScript是两个至关重要的技术。FLEX是一个开放源代码的框架,主要用于构建富互联网应用程序(RIA),而ActionScript是Adobe Flash平台中的编程语言,用于控制动画、交互性和...

    使用FLEX 和 Actionscript开发FLASH 游戏(一)

    【使用FLEX和ACTIONSCRIPT开发FLASH游戏】 在开发FLASH游戏时,FLEX和ACTIONSCRIPT是两个重要的技术。FLEX是一个开放源代码的框架,用于构建富互联网应用(RIA),而ACTIONSCRIPT是Adobe Flash环境中用于创建交互性...

    FLEX和Actionscript开发FLASH游戏

    **学习资源与源代码**:提供的"Flex和Actionscript开发FLASH游戏"压缩包可能包含教材、示例项目和源代码,这些都是学习和实践的好材料。通过分析源代码,可以深入理解如何将FLEX和ActionScript结合应用于实际游戏...

    FLEX和Actionscript开发FLASH 游戏

    3. **Flash游戏开发**:使用FLEX和ActionScript开发Flash游戏,开发者可以利用丰富的图形库、音频处理和动画工具,创建各种类型的游戏,如2D平台游戏、益智游戏、射击游戏等。ActionScript提供了强大的游戏循环机制...

    使用FLEX 和 Actionscript开发FLASH 游戏(二)

    在本篇教程中,我们将继续深入探讨如何使用FLEX和ActionScript开发FLASH游戏,特别是引入了状态管理和双缓冲绘制技术。这两个技术对于构建流畅、高效的游戏体验至关重要。 首先,我们来了解一下状态管理。在游戏...

    使用FLEX 和 Actionscript 开发FLASH 游戏7-3

    ### 使用FLEX和ActionScript开发FLASH游戏:位图动画 #### 概述 在本章节中,我们将深入了解如何使用FLEX和ActionScript来开发Flash游戏中的位图动画。位图动画是通过一系列图像序列来创建动态效果的一种技术,...

    使用FLEX 和 Actionscript开发FLASH 游戏(四)-1

    在本篇教程中,我们将继续深入探讨如何使用FLEX和ActionScript开发Flash游戏。在上一部分,我们学会了在屏幕上绘制图形。现在,我们将使游戏更具交互性,添加鼠标输入功能,以及创建动态背景,使玩家的飞船能在其中...

    使用FLEX 和 Actionscript开发FLASH 游戏(三)-2

    总的来说,使用FLEX和ActionScript开发Flash游戏涉及到许多核心概念,如图形渲染、时间管理、游戏对象的生命周期管理和状态维护。理解并熟练应用这些概念是创建动态、交互式游戏的关键。通过`GameObjectManager`类,...

    使用FLEX 和 Actionscript开发FLASH 游戏(五)

    在这一部分中,我们将深入探讨如何使用FLEX和Actionscript开发FLASH游戏,特别是关于增加敌机和游戏者的武器。在前四部分的学习中,我们已经构建了基础的游戏框架,包括用户输入和滚动背景。现在,我们将利用已有的...

    使用FLEX和Actionscript开发FLASH 游戏9-1

    在使用FLEX和Actionscript开发FLASH游戏的过程中,创建和管理游戏级别是非常关键的一环。本文主要探讨了如何通过这两种技术来构建一个结构化的级别系统,让开发者能够更好地控制游戏流程。 首先,文章提出了一个...

    使用FLEX 和 Actionscript开发FLASH 游戏(三)-4

    使用FLEX和Actionscript开发FLASH游戏,涉及到的技术主要集中在面向对象编程、图形处理和资源管理等方面。在本示例中,我们将关注如何创建动态游戏元素以及如何有效地管理游戏资源。 首先,`Bounce`类是一个扩展自`...

    使用FLEX 和 Actionscript 开发FLASH 游戏6-2

    总结来说,使用FLEX和ActionScript开发Flash游戏,你需要理解游戏对象的结构和生命周期管理,以及如何实现基本的碰撞检测机制。通过编写和优化这些功能,可以创建出丰富、互动性强的Flash游戏。

    使用FLEX和Actionscript开发FLASH 游戏10-3

    在使用FLEX和Actionscript开发FLASH游戏的过程中,平铺式背景渲染是一种常见的技术,用于创建无限滚动或大范围的游戏背景。以下将详细解释这个技术及其关键组成部分。 首先,`TiledBackground` 类是专为创建平铺...

    使用FLEX和Actionscript开发FLASH 游戏10-1

    总之,使用FLEX和Actionscript开发Flash游戏时,平铺式背景是一个高效且实用的技术,它允许开发者创建出广阔的游戏世界,同时保持游戏的流畅性和资源效率。通过精心设计的类和编辑工具,我们可以轻松管理游戏的背景...

    使用FLEX和 Actionscript 开发FLASH游戏(八)-2

    ### 使用FLEX和ActionScript开发FLASH游戏:音乐与声效管理 #### 一、引言 在本章节中,我们将深入探讨如何使用Flex和ActionScript技术来开发Flash游戏中的音乐和声效部分。通过分析提供的代码片段,我们将了解如何...

    使用FLEX 和 Actionscript 开发FLASH 游戏8-1

    总结来说,在使用FLEX和ActionScript开发Flash游戏时,通过`ResourceManager`管理资源,利用`Embed`元标签嵌入音频和视频,再结合`flash.media`包中的类进行播放控制,能够轻松地实现音乐和声效的集成。这样,你的...

    使用FLEX 和 Actionscript开发FLASH 游戏(四)-2

    总结来说,使用FLEX和ActionScript开发Flash游戏时,`GameObject`类提供了一个基础结构,可以方便地扩展以创建各种游戏对象。通过处理鼠标事件,我们可以实现玩家与游戏的深度交互,让游戏更加生动有趣。在实际开发...

    使用FLEX和Actionscript开发FLASH 游戏9-2

    在使用FLEX和Actionscript开发FLASH游戏的过程中,创建和管理游戏关卡是至关重要的部分。在提供的代码中,我们看到一个名为`LevelDefinitions`的类,这个类是用于定义和管理游戏的不同级别。以下是该类的主要知识点...

    使用FLEX 和 Actionscript开发FLASH 游戏(六)-3

    在本篇关于使用FLEX和Actionscript开发FLASH游戏的文章中,我们将专注于游戏对象管理器(GameObjectManager)的实现,特别是碰撞检测这一关键功能。GameObjectManager是游戏引擎的核心组件,负责处理游戏对象的生命...

Global site tag (gtag.js) - Google Analytics