Scaleform Gfx的Demo
转载: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的更多相关文章
- 我所遭遇过的游戏中间件--Scaleform
我所遭遇过的游戏中间件---Scaleform Scaleform帮助开发人员利用现代系统的三维硬件加速性能创建电影品质的菜单.游戏内HUD,动画纹理.迷你游戏以及移动游戏与应用.Scaleform作 ...
- UDK Stat命令
Stat命令(chs en)提供了游戏和引擎各个方面的实时统计信息,输入不同参数会在屏幕HUD上显示对应统计数据. 非Shipping版的UDK才会启用STATS宏,统计逻辑才会编译进exe,才能使 ...
- scaleform mobile sdk for android 多点触摸 修正
修正 scaleform 的多点触控 (随手一记 给后来的人做个参考) scaleform 版本号 4.2.24 (估计这就是最后一个 移动版的版本了,万年没有更新了) 开始 一直以为 scalefo ...
- qml demo分析(maroon-小游戏)
1.效果展示 这篇文章我还是分析一个qt源码中的qml程序,程序运行效果如下图所示. 图1 游戏开始 图2 游戏中 2.源码分析 这个游戏的源码文件比较多,为了能更清楚的了解整个代码,我先整体分析 ...
- scaleform中ActionScript和UnrealScript的交互
转自:http://www.cnblogs.com/NEOCSL/p/4174134.html scaleform是制作UI的好工具: 1.他可以解放程序员用代码控制的UI效果,例如平移,旋转和缩放都 ...
- 通过一个demo了解Redux
TodoList小demo 效果展示 项目地址 (单向)数据流 数据流是我们的行为与响应的抽象:使用数据流能帮我们明确了行为对应的响应,这和react的状态可预测的思想是不谋而合的. 常见的数据流框架 ...
- 很多人很想知道怎么扫一扫二维码就能打开网站,就能添加联系人,就能链接wifi,今天说下这些格式,明天做个demo
有些功能部分手机不能使用,网站,通讯录,wifi基本上每个手机都可以使用. 在看之前你可以扫一扫下面几个二维码先看看效果: 1.二维码生成 网址 (URL) 包含网址的 二维码生成 是大家平时最常接触 ...
- 在线浏览PDF之PDF.JS (附demo)
平台之大势何人能挡? 带着你的Net飞奔吧!:http://www.cnblogs.com/dunitian/p/4822808.html#skill 下载地址:http://mozilla.gith ...
- 【微框架】Maven +SpringBoot 集成 阿里大鱼 短信接口详解与Demo
Maven+springboot+阿里大于短信验证服务 纠结点:Maven库没有sdk,需要解决 Maven打包找不到相关类,需要解决 ps:最近好久没有写点东西了,项目太紧,今天来一篇 一.本文简介 ...
随机推荐
- python中关于round函数的小坑
这个一直都想写,但是因为这个点比较小,所以一直懒得动手.不过还是补上吧,留着早晚是个祸害. round函数很简单,对浮点数进行近似取值,保留几位小数.比如 >>> round(10. ...
- Android开发(十六)——Android listview onItemClick事件失效的原因
参考: Android listview onItemClick事件失效的原因.http://blog.csdn.net/wangchun8926/article/details/8793178
- JVM 内部原理(六)— Java 字节码基础之一
JVM 内部原理(六)- Java 字节码基础之一 介绍 版本:Java SE 7 为什么需要了解 Java 字节码? 无论你是一名 Java 开发者.架构师.CxO 还是智能手机的普通用户,Java ...
- 分布式系统CAP理论与CA选择
总结: CAP指的是数据一致性.服务可用性.分区容错性:(这里的一致性指的是强一致性,又叫原子性或线性一致性:可用性指的是所有读写操作都要能终止,没有时延上的要求) 分布式系统中P是必选项:在P必选的 ...
- oracle函数详解-转
1.SQL 语句基础 下面给出SQL语句的基本介绍. 1.1.SQL语句所用符号 操作符 用途 例子 + - 表示正数或负数,正数可省去 + -1234.56 + 将两个数或表达式进行相加 A=c+b ...
- 如何使用ABBYY FineReader 12将JPEG文件转换成Word文档
日常工作中处理JPEG格式的图像文件时,有时需要转换成Word文档进行编辑,市场上应用而生了很多转换工具,相信不少人听说过OCR(光学字符识别)软件,可以用来转换图像文件,而在OCR软件中, ABBY ...
- .Net Core 部署到Ubuntu 16.04 中的步骤
需要安装的工具 .Net Core Nginx反向代理服务器(相当于Windows下的IIS) Supervisor(进程管理工具) .Net Core安装方法请参阅 官方文档 安装完成后就可以在项目 ...
- 【python】用python生成pdf文件
转自:https://www.davidfischer.name/2015/08/generating-pdfs-with-and-without-python/ from reportlab.pla ...
- Android 监听键盘弹出和收起.
entends:http://stackoverflow.com/questions/36837066/how-to-validate-virtual-keyboard-visibility 监听键盘 ...
- Spring学习笔记--Spring简介
1.spring:给软件行业带来了春天; 2.spring的理念:spring框架的初衷是使的现有的更加实用,spring不是创造轮子(技术或框架),而是使现有的轮子更好的运转;spring本身是一个 ...