转自: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的交互的更多相关文章

  1. Flex(ActionScript)与JavaScript交互的两种方式示例

    随着各单位部门信息化进程的不断发展,互通互联.共享协调不断的被越来越多的客户所重视.很多新项目都要去必须能够集成已有的早期系统,至少也要能够实现交互对接.今天跟大家分享的是系统对接中ActionScr ...

  2. 【ActionScript】Flash与网页的交互,ActionScript与JavaScript的交互

    Flash是可以轻松与网页交互数据的,不然为何Flash会有这么大的生命力呢?仅仅是这样编程比較麻烦而已,又要调试Flash,然后又要放到server上调试. 只是这种方式可以收到非常好的效果.Fla ...

  3. Android中webView和网页的交互

     Android中webView和网页的交互 Android中webView跟网页的交互式通过JavaScript进行的.具体步骤: 1.创建JavaScript,在点击的时候调用JavaScript ...

  4. 如何使用Web3在浏览器中与智能合约进行交互

    2018-4-20 技术文章 Web3.js是以太坊官方的Javascript API,可以帮助智能合约开发者使用HTTP或者IPC与本地的或者远程的以太坊节点交互.实际上就是一个库的集合,主要包括下 ...

  5. asp.net中javascript与后台c#交互

    asp.net中javascript与后台c#交互 作者:熊猫大叔 字体:[增加 减小] 类型:转载 时间:2015-10-23我要评论,出处:http://www.jb51.net/article/ ...

  6. 安卓中java和js如何交互

    1.安卓中java和js如何交互 在Android上怎样实现JAVA和JS交互呢?Android的webview是基于webkit内核的,webview中集成了js与java互调的接口函数,通过add ...

  7. Cortex-M3中C与汇编的交互

          以下内容摘自<ARM Cortex-M3权威指南>         概览       在CM3 上编程,既可以使用C 也可以使用汇编.可能还有其它语言的编译器,但是大多数人还是 ...

  8. iOS中JS 与OC的交互(JavaScriptCore.framework)

    iOS中实现js与oc的交互,目前网上也有不少流行的开源解决方案: 如:react native 当然一些轻量级的任务使用系统提供的UIWebView 以及JavaScriptCore.framewo ...

  9. Delphi中Android运行和JNI交互分析

    Androidapi.JNIBridge负责和JNI交互.,既然要交互,那么首先就是需要获得JNI的运行环境,Android本身内置的就有一个Java(Dalvik)虚拟机.所以这个第一步就肯定是要这 ...

随机推荐

  1. 解决ListView滑动时出现黑边的问题

    [声明]转载请注明出处,此文出自指尖飞落的博客:http://blog.csdn.net/huntersnail --尊重作者,知识无价.交流无限! 两种方法 1.代码去边缘线 myList.setF ...

  2. zabbix-agent active 配置自动探测

    1. zabbix-agent 被动模式配置文件: PidFile=/var/run/zabbix/zabbix_agentd.pid LogFile=/var/log/zabbix/zabbix_a ...

  3. NSSrting的几种经常使用的使用方法

    1.创建NSString字符串 NSString 与 char* 最大的差别就是 NSString是一个objective对象,而char* 是一个字节数组. @+" 字符串 " ...

  4. 【Android开发-5】界面装修,五大布局你选谁

    前言:假设要开一家店,门店装修是非常重要的事情.有钱都请专门的建筑设计公司来设计装修,没钱的仅仅能自己瞎折腾.好不好看全凭自己的感觉.像Android开发.在移动端大家看到的界面视觉不咋滴,一般连打开 ...

  5. 基于红帽5裁剪一个简单的Linux

    HOST:宿主机 Target:目标机 1.基于HOST制作一个简单的可启动的Linux 1.给目标磁盘分区 两个: 在宿主机上:/dev/sdb1,/dev/sdb2 /dev/sdb1挂载到 /m ...

  6. Win10上Python3通过pip安装时出现UnicodeDecodeError

    http://blog.csdn.net/qq_33530388/article/details/68933201 解决方法: 打开 c:\program files\python36\lib\sit ...

  7. 【BZOJ2132】圈地计划 最小割

    [BZOJ2132]圈地计划 Description 最近房地产商GDOI(Group of Dumbbells Or Idiots)从NOI(Nuts Old Idiots)手中得到了一块开发土地. ...

  8. 观察OnPaint与OnIdle与OnSize事件

    import wx class SketchWindow(wx.Window): def __init__(self, parent, ID): wx.Window.__init__(self, pa ...

  9. flex做页面。用来做视频的后台服务器是fms

    作为新一代的富客户端互联网技术的佼佼者,Flex这种技术已经被越来越多的公司所采用,被越来越多的用户和程序员所接受.以下列出Flex十大优势: 1.Flex与Flash:可以让普通程序员开发制作Fla ...

  10. SAP-财务知识点

    [转自 http://blog.itpub.net/195776/viewspace-1023912/] SAP FI/CO Reading RepositorySAP财务成本知识库 目 录前言.一. ...