转载:http://www.xuebuyuan.com/2167614.html

新建一个Demo工程时,编译之前有一些VS的配置是必须的,在Debug和Release下,工程必须包括:

$(GFXSDK)\Src\GRenderer

$(GFXSDK)\Src\GKernel

$(GFXSDK)\Src\GFxXML

$(GFXSDK)\Include

这里$(GFXSDK)环境变量指的就是你安装Gfx的位置,其实如果你能够有Gfx中的Lib何Include文件夹得话,你吧他们放到工程目录下,你就可以使用相对路径来指定这些路径,就不必为每个开发人员安装Gfx了。

至于库文件,就是一些核心的内容,这部分是不会提供源码,所以我们也必须包含这些库文件来提供给应用程序

$(DXSDK_DIR)\Lib\x86

$(GFXSDK)\3rdParty\expat-2.0.1\lib

$(GFXSDK)\Lib\$(PlatformName)\Msvc80\Debug_Static\

$(GFXSDK)\3rdParty\zlib-1.2.3\Lib\$(PlatformName)\Msvc80\Debug

$(GFXSDK)\3rdParty\jpeg-6b\Lib\$(PlatformName)\Msvc80\Debug

我们开发程序时基本要用的库文件如下:

libgfx.lib 

libjpeg.lib

zlib.lib 

imm32.lib  

winmm.lib

libgrenderer_d3d9.lib

作为一个没有封装过的引擎,在开发程序的时候需要建立以下的一些对象来实现一个对象的加载:

#include "GTimer.h"

#include "GFxEvent.h"

#include "GFxPlayer.h" 

#include "GFxFontLib.h"

#include "FxPlayerLog.h"

#include "GRendererD3D9.h"

// GFxLoader 每个应用程序都需要一个Load来读取来自文件的Flash文件

GFxLoader           gfxLoader;

 

// SWF/GFx GFxMovieDef  这是一个具体的定义Flash文件的对象,通过它可以创建一个可操作的Flash对象

GPtr<GFxMovieDef>   pUIMovieDef;

 

// GFxMovieView 这是一个可以操作的Flash对象,通过它可以进行与C++和Flash直接进行通信和传递参数以及一些对影片的操作。

GPtr<GFxMovieView>  pUIMovie;

 

// D3D9 这个是针对这个Deam儿建立的D3D对象。

GPtr<GRendererD3D9>   pRenderer;

GPtr<GFxRenderConfig> pRenderConfig;

第一步肯定是要为Gfx分配内存,GFxSystem对象就是这个作用,这个对象在第一个Gfx被调用时获取,并且在结束前不能释放,它位于WinMian函数头里面。

在初始化过程中执行下面的一些操作:

gfxLoader->SetLog(GPtr<GFxLog>(*new GFxPlayerLog()));

//读取文件的对象

GPtr<GFxFileOpener> pfileOpener = *new GFxFileOpener 

//  默认方式导入

GPtr<GFxFileOpener> pfileOpener = *new GFxFileOpener;

gfxLoader->SetFileOpener(pfileOpener);

GfxLoader通过GFxFileOpener来读取文件内容,默认为从磁盘读入,也可以从内存或其他资源文件读入。

D3D对象的创建和关联如下:

// GFxD3D

pRenderer = *GRendererD3D9::CreateRenderer();

  

// GFxLoader

pRenderConfig = *new GFxRenderConfig(pRenderer);

gfxLoader->SetRenderConfig(pRenderConfig);

这样很轻松的就将对象关联进了Gfx Movie中,这里如果不是D3D对象,而是其他对象如GameBryo等,也可以用类似的方法。

接下来就是导入Flash文件了,通过一个宏定义路径UIMOVIE_FILENAME相对路径来导入

// 

pUIMovieDef = *(gfxLoader.CreateMovie(UIMOVIE_FILENAME, 

                                  GFxLoader::LoadKeepBindData |

              GFxLoader::LoadWaitFrame1));

动画实例的创建时通过上面的pUIMovieDef来创建的。

pUIMovie = *pUIMovieDef->CreateInstance(true);

指向动画的第一帧:

pUIMovie->Advance(0.0f, 0);

透明的效果和背景融合。

pUIMovie->SetBackgroundAlpha(0.0f);

接下来就是设置Flash的视窗和缩放方式。// 

RECT windowRect = DXUTGetWindowClientRect();

DWORD windowWidth = windowRect.right - windowRect.left;

DWORD windowHeight = windowRect.bottom - windowRect.top;

pUIMovie->SetViewport(windowWidth, windowHeight, 0, 0, 

                      windowWidth, windowHeight);

pUIMovie->SetViewScaleMode(GFxMovieView::SM_ShowAll);//默认的方式,按上面指定窗口比例扩展

如下是一些对齐方式的代码

pUIMovie->SetViewAlignment(GFxMovieView::Align_CenterRight);

在消息循环里面,flash的事件响应都会在ProcessEvent(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam, bool *pbNoFurtherProcessing) 总进行处理。

总体看起来还是很麻烦的,做了过多的底层操作。

但是如果等到他哈GameBryo集成后的游戏引擎,你会发现这些操作你基本上都不用在去做了,而更加关注的是逻辑的设计,这里的一个Demo只是为了解释一下大体上的一个架构。

Scaleform Gfx的Demo的更多相关文章

  1. 我所遭遇过的游戏中间件--Scaleform

    我所遭遇过的游戏中间件---Scaleform Scaleform帮助开发人员利用现代系统的三维硬件加速性能创建电影品质的菜单.游戏内HUD,动画纹理.迷你游戏以及移动游戏与应用.Scaleform作 ...

  2. UDK Stat命令

    Stat命令(chs  en)提供了游戏和引擎各个方面的实时统计信息,输入不同参数会在屏幕HUD上显示对应统计数据. 非Shipping版的UDK才会启用STATS宏,统计逻辑才会编译进exe,才能使 ...

  3. scaleform mobile sdk for android 多点触摸 修正

    修正 scaleform 的多点触控 (随手一记 给后来的人做个参考) scaleform 版本号 4.2.24 (估计这就是最后一个 移动版的版本了,万年没有更新了) 开始 一直以为 scalefo ...

  4. qml demo分析(maroon-小游戏)

    1.效果展示 这篇文章我还是分析一个qt源码中的qml程序,程序运行效果如下图所示. 图1  游戏开始 图2  游戏中 2.源码分析 这个游戏的源码文件比较多,为了能更清楚的了解整个代码,我先整体分析 ...

  5. scaleform中ActionScript和UnrealScript的交互

    转自:http://www.cnblogs.com/NEOCSL/p/4174134.html scaleform是制作UI的好工具: 1.他可以解放程序员用代码控制的UI效果,例如平移,旋转和缩放都 ...

  6. 通过一个demo了解Redux

    TodoList小demo 效果展示 项目地址 (单向)数据流 数据流是我们的行为与响应的抽象:使用数据流能帮我们明确了行为对应的响应,这和react的状态可预测的思想是不谋而合的. 常见的数据流框架 ...

  7. 很多人很想知道怎么扫一扫二维码就能打开网站,就能添加联系人,就能链接wifi,今天说下这些格式,明天做个demo

    有些功能部分手机不能使用,网站,通讯录,wifi基本上每个手机都可以使用. 在看之前你可以扫一扫下面几个二维码先看看效果: 1.二维码生成 网址 (URL) 包含网址的 二维码生成 是大家平时最常接触 ...

  8. 在线浏览PDF之PDF.JS (附demo)

    平台之大势何人能挡? 带着你的Net飞奔吧!:http://www.cnblogs.com/dunitian/p/4822808.html#skill 下载地址:http://mozilla.gith ...

  9. 【微框架】Maven +SpringBoot 集成 阿里大鱼 短信接口详解与Demo

    Maven+springboot+阿里大于短信验证服务 纠结点:Maven库没有sdk,需要解决 Maven打包找不到相关类,需要解决 ps:最近好久没有写点东西了,项目太紧,今天来一篇 一.本文简介 ...

随机推荐

  1. Source Insight 常用设置

    1.背景色选择 要改变背景色Options->preference->windows background->color设置背景色2.解决字符等宽对齐问题    SIS默认字体是VE ...

  2. Andorid开发(二十二)——获取上下文getApplicationContext()、Activity.this、 getBaseContext

    getApplicationContext() //返回应用的上下文,生命周期是整个应用,应用摧毁它才摧毁 Activity.this的context //返回当前activity的上下文,属于act ...

  3. MyBatis XML转义字符

    当我们需要通过xml格式处理sql语句时,经常会用到< ,<=,>,>=等符号,但是很容易引起xml格式的错误,这样会导致后台将xml字符串转换为xml文档时报错,从而导致程序 ...

  4. Android KK 找不到<cutils/properties.h>

    一直通过property来控制android系统的号码匹配位数,之前的项目都工作的好好的,但到了KK时,在sqlite库中引用property的相关方法,却一直编译error... 折腾了好久,发现从 ...

  5. C语言中的字符串处理库函数介绍与实现

    一.介绍 本文将主要介绍字符串处理库函数中的strlen.strcpy.strcat.strcmp.atoi等,主要由<string.h>头文件提供. 二.strlen函数:求字符串的长度 ...

  6. portfolio

    1.工作量计算逻辑: 原始待办事项: 预估2个冲刺,如下图所示: Sprint1的故事点计划工作量5,空闲工作量28.如下图 Sprint2为预估冲刺,指的是预估待办事项在后续冲刺的预估计划,后续冲刺 ...

  7. Scala学习笔记——断言和单元测试

    1.断言 assert(conditon)将在条件不成立的时候,抛出assertionError assert(conditon,explanation)讲在条件不成立的时候,抛出explanatio ...

  8. [转]iOS 中几种定时器 - 控制了时间,就控制了一切

    这篇文章是转载内容,原文地址:http://www.cocoachina.com/ios/20150519/11857.html?utm_source=tuicool 这里的知识点,其实在我们日常开发 ...

  9. Android四大组件之——Activity(一)定义、状态和后退栈(图文详解)

    什么是Activity 关键字:应用组件.四大组件.用户界面,交互. An Activity is an application component that provides a screen wi ...

  10. HighCharts-动态配置csv格式数据

    场景: 开发一个大型热力图.官网示例中只有设置静态csv数据的例子.一直没有找到如何给热力图加载动态数据. 无奈,只好把要加载的数据拼接成csv格式后,供热力图加载. 拼接数据js:(dataArr是 ...