首页 > 代码库 > scaleform中ActionScript和UnrealScript的交互

scaleform中ActionScript和UnrealScript的交互

  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 classAntGFXMenu;    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(0.f);    AttackButton=GetVariableObject("_root.btn1");//Flash中变量名    Cursor=GetVariableObject("_root.cursor_mc");//获取鼠标}//实时更新用得着function TickHUD(){//实时更新的动作}defaultproperties{   bDisplayWithHUDoff=false  //是否干掉HUD   MovieInfo=swfMovieTest.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的交互