scaleform中ActionScript和UnrealScript的交互
转自:http://www.cnblogs.com/NEOCSL/p/4174134.html
scaleform是制作UI的好工具:
1.他可以解放程序员用代码控制的UI效果,例如平移,旋转和缩放都手到擒来。如果要做复杂的动画页面,单纯的靠代码来实现非常的麻烦。
2.他可以结合游戏引擎使用renderTarget的形式实现立体UI。这一点非常的酷。像老生常谈的《死亡空间》和最新的《高级战争》。
入正题,设置让ActionScript和UnrealScript实现交互。
Flash:
1.引入PNG图片到库中。正确的设置其属性,删除后缀。我们引入一个按钮图片一个鼠标指针,用来实现鼠标按钮点击的功能实现:
在时间轴上建立5个通道,一个为action,在第一帧上插入AS2脚本代码。我们设置了三个按钮,每一个按钮放在一个单独的时间轴上,用F8将那几张图片转换为button。将三个按钮分别拖拽入场景中,属性实例名分别为btn1,btn2,btn3。然后在action时间轴的第一帧上填写代码
import flash.external.ExternalInterface;
import gfx.controls.Button;
import gfx.motion.Tween; _global.gfxExtensions=true;
import mx.utils.Delegate; btn1.onPress=function()
{
ExternalInterface.call('attack');
trace("attack button pressed");
} btn2.onPress=function()
{
ExternalInterface.call('Jump');
trace("jump button pressed");
} btn3.onPress=function()
{
ExternalInterface.call('Defense');
trace("defense button pressed");
}
上边的代码分别定义了每一个按钮按下之后所对应的unrealscript函数,例如call('attack')中'attack'。
接下来设置鼠标指针,点击鼠标指针,然后F9填写代码
onClipEvent(enterFrame)
{
_x=_root._xmouse
_y=_root._ymouse
}
该段代码可以让鼠标出现。
UnrealScript:
我们打算借用HUD来显示调用自己的新scaleform页面,新建一个类AntGFXMenu,该类继承自GFXMoviePlayer。在HUD中有:
var AntGFXMenu MenuMovie; //创建
function CreateGFXMenu()
{
MenuMovie=new class'AntGFXMenu';
MenuMovie.SetTimingMode(TM_Real);
MenuMovie.Initialize(); //在AntGFXMenu中自定义的初始化
}
//销毁
singular event Destroyed()
{
super.Destroyed();
if(MenuMovie!=none)
{
MenuMovie.Close(true);
MenuMovie=none;
}
}
//在HUD的DrawHUD类中
function DrawHUD()
{
//调用scaleform的刷新渲染
MenuMovie.TickHUD();
}
在AntGFXMovie类中
class AntGFXMenu extends GFXMoviePlayer; //寻找Flash中定义的变量组件,我们只实现鼠标和按钮
var GFXObject AttackButton,Cursor; //功能实现
function Initialize()
{
Start(); //scaleform的初始化函数
Advance(.f); AttackButton=GetVariableObject("_root.btn1");//Flash中变量名
Cursor=GetVariableObject("_root.cursor_mc");//获取鼠标
} //实时更新用得着
function TickHUD()
{//实时更新的动作
} defaultproperties
{
bDisplayWithHUDoff=false //是否干掉HUD
MovieInfo=swfMovie'Test.MenuTest' //菜单
bIgnoreMouseInfo=false
}
以上是一般的通常步骤,下面的代码用于演示unrealscript调用actionscript的方法;
//在function之前
delegate AttackDelegate(); //实现按钮的函数定义,AS中ExternalInterface.call('attack');
function SetupAttackDelegate(delegate<AttackDelegate> d)
{
local GFXObject RootObj;
RootObj=GetVariableObject("_root"); //我们的action第一帧
ActionScriptSetFunction(RootObj,"Attack"); //ActionScript中
} //as调用的函数
function Attack()
{
AntPlayerController(GetPC()).GiveMoney();
}
至此结束。
scaleform中ActionScript和UnrealScript的交互的更多相关文章
- Flex(ActionScript)与JavaScript交互的两种方式示例
随着各单位部门信息化进程的不断发展,互通互联.共享协调不断的被越来越多的客户所重视.很多新项目都要去必须能够集成已有的早期系统,至少也要能够实现交互对接.今天跟大家分享的是系统对接中ActionScr ...
- 【ActionScript】Flash与网页的交互,ActionScript与JavaScript的交互
Flash是可以轻松与网页交互数据的,不然为何Flash会有这么大的生命力呢?仅仅是这样编程比較麻烦而已,又要调试Flash,然后又要放到server上调试. 只是这种方式可以收到非常好的效果.Fla ...
- Android中webView和网页的交互
Android中webView和网页的交互 Android中webView跟网页的交互式通过JavaScript进行的.具体步骤: 1.创建JavaScript,在点击的时候调用JavaScript ...
- 如何使用Web3在浏览器中与智能合约进行交互
2018-4-20 技术文章 Web3.js是以太坊官方的Javascript API,可以帮助智能合约开发者使用HTTP或者IPC与本地的或者远程的以太坊节点交互.实际上就是一个库的集合,主要包括下 ...
- asp.net中javascript与后台c#交互
asp.net中javascript与后台c#交互 作者:熊猫大叔 字体:[增加 减小] 类型:转载 时间:2015-10-23我要评论,出处:http://www.jb51.net/article/ ...
- 安卓中java和js如何交互
1.安卓中java和js如何交互 在Android上怎样实现JAVA和JS交互呢?Android的webview是基于webkit内核的,webview中集成了js与java互调的接口函数,通过add ...
- Cortex-M3中C与汇编的交互
以下内容摘自<ARM Cortex-M3权威指南> 概览 在CM3 上编程,既可以使用C 也可以使用汇编.可能还有其它语言的编译器,但是大多数人还是 ...
- iOS中JS 与OC的交互(JavaScriptCore.framework)
iOS中实现js与oc的交互,目前网上也有不少流行的开源解决方案: 如:react native 当然一些轻量级的任务使用系统提供的UIWebView 以及JavaScriptCore.framewo ...
- Delphi中Android运行和JNI交互分析
Androidapi.JNIBridge负责和JNI交互.,既然要交互,那么首先就是需要获得JNI的运行环境,Android本身内置的就有一个Java(Dalvik)虚拟机.所以这个第一步就肯定是要这 ...
随机推荐
- 10个经典Java面试题
1.Java的HashMap是怎样工作的? HashMap是一个针对数据结构的键值.每一个键都会有对应的值.关键是识别这种值. HashMap 基于 hashing 原理,我们通过 put ()和 g ...
- ios - UISearchBar输入框背景色
//输入框背景色 bar.searchBarStyle = UISearchBarStyleMinimal; [bar positionAdjustmentForSearchBarIcon:UISea ...
- Easy AR简单教程
Easy AR简单教程 相关SDK资源下载链接:http://pan.baidu.com/s/1dERtCWD 密码:o0jd 1.ImageTarget的制作 (1).导入EasyARSD包,删 ...
- DockPanel的使用与技巧
DockPanel的使用 1.建立一个WinForm工程,默认生成了一个WinForm窗体Form1. 2.引用—>添加引用—>浏览—>weiFenLuo.winFormsUI.Do ...
- json 数据返回解密
http://www.cnhan.com/shantui//dynamic/get/data/allCompanyInfoByCompCode.json?compCode=6SU5YCJ <sc ...
- 一文快速搞懂MySQL InnoDB事务ACID实现原理(转)
这一篇主要讲一下 InnoDB 中的事务到底是如何实现 ACID 的: 原子性(atomicity) 一致性(consistency) 隔离性(isolation) 持久性(durability) 隔 ...
- mongo简介
MongoDB MongoDB是一款强大.灵活.且易于扩展的通用型数据库 MongoDB 是由C++语言编写的,是一个基于分布式文件存储的开源数据库系统. 在高负载的情况下,添加更多的节点,可以保证服 ...
- centos下安装nodejs及websocket
软件环境: VMware Workstation CentOS 6.5 NodeJS v0.12.5 安装过程: Step 1.确认服务器有nodejs编译及依赖相关软件,如果没有可通过运行以下命令安 ...
- HTML5_CSS3可切换注册登录表单
在线演示 本地下载
- "flash download failed - Target dll has been cancelled"错误解决办法
在用mdk通过stlink烧写官方例程到stm32f429I discovery时,烧写了十来个程序都没问题,突然在烧写一个程序时, 弹出了“flash download failed - Targe ...