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)虚拟机.所以这个第一步就肯定是要这 ...
随机推荐
- 安卓ADT离线安装
http://jingyan.baidu.com/article/3aed632e66858770108091bf.html
- Linux下Kafka单机安装配置方法
Kafka是一个分布式的.可分区的.可复制的消息系统.它提供了普通消息系统的功能,但具有自己独特的设计.这个独特的设计是什么样的呢? 首先让我们看几个基本的消息系统术语: •Kafka将消息以topi ...
- 【转】win7 任务计划 任务映像已损坏或篡改(异常来自HRESULT:0x80041321)
请这样操作:1. 以管理员身份运行命令提示符并执行命令chcp 437schtasks /query /v | find /i "ERROR: Task cannot be loaded:& ...
- python 基础 2.4 while 循环
#/usr/bin/python #coding=utf-8 #@Time :2017/10/18 15:31 #@Auther :liuzhenchuan #@File :while 循环.py 示 ...
- Error -27728: Step download timeout (120 seconds)的解决方法(转)
LR中超时问题解决方法 超时错误在LoadRunner录制Web协议脚本回放时超时经常出现. 现象1:Action.c(16): Error -27728: Step download timeout ...
- No provisioned iOS devices are available with a compatible iOS version. Connect an iOS device with a
No provisioned iOS devices are available with a compatible iOS version. Connect an iOS device with a ...
- 移动端 (H5) 调试工具 -- vconsole
最近在改一个移动端项目,在手机上调试贼头疼,什么日志都看不到,分析不了bug问题. 然后我同事给我介绍了一个移动端的调试神器 -- vconsole 有了这个神器,领导再也不用担心我的工作啦!!! 0 ...
- windowService中使用多线程
windowService中使用多线程 代码 using System;using System.Collections.Generic;using System.Linq;using System. ...
- jsp日期插件My97DatePicker 强大的日期控件 使用方便简单(转)
本文属转载(希望对编程爱好者有所帮助)详情请访问官方网站 http://www.my97.net/dp/index.asp 一. 简介 1. 简介 目前的版本是:4.7 2. 注意事项 My97Dat ...
- L94
Early-morning births are genetically programmed THE notion that nothing good happens after midnight ...