首页 >> 动画知识 >> flash游戏

Animation knowledge

flash游戏

识别键盘连招的flash组合键

大字小字2014年9月28日

  Flash游戏越来越流行,设计衡量越来越高科技。在下面是总结Flash游戏中的pk游戏中比较常用到的组合键盘的连招类:

  新建一个名为key_func的as文件下面收藏的脚本;

  class key_func extends MovieClip {

  var prop;

  var oldVal;

  var newVal;

  var mid_val;

  var m_obj;

  //arr:Array (连招组合的键盘数字),( OBJ:Object对象1 ,OBJ2:Object对象2。。注意函数调用函数的这两个对象最好都是唯一的)

  //tmp:String(一个临时争听mc函数调用时最好也是唯一的),func_:Function(成功完成连招时调用的函数, time:Number招式调用的按键间隔)

  function key_func(arr:Array, OBJ:Object, OBJ2:Object, tmp:MovieClip, func_:Function, time:Number) {

  var OBJ = new Object();

  var OBJ2 = new Object();

  OBJ2.key;

  OBJ2.what = 0;

  OBJ.num = 0;

  OBJ.num2 = 0;

  OBJ.onKeyDown = function() {

  if (this.once == undefined) {

  this.once = 1;

  if (OBJ2.blo == undefined) {

  if (Key.getCode() == arr[this.num]) {

  this.num++;

  }

  } else if (Key.getCode() == arr[this.num] && OBJ2.blo !== undefined) {

  this.num++;

  } else if (Key.getCode() != arr[this.num]) {

  this.num = 0;

  delete OBJ2.blo;

  }

  OBJ2.key = getTimer();

  if (this.num>arr.length) {

  this.num = 0;

  }

  }

  };

  var cnt = 0;

  tmp.onEnterFrame = function() {

  cnt++;

  if (cnt>2) {

  delete OBJ.once;

  cnt = 0;

  }

  };

  OBJ.onKeyUp = function() {

  delete this.once;

  };

  Key.addListener(OBJ);

  watch(OBJ2, OBJ2.key, "key", funcForObj, 0);

  function funcForObj() {

  if (OBJ.num>1) {

  if (arguments[2]-arguments[1]>time || arguments[2]-arguments[1]<0) {

  OBJ2.blo = true;

  OBJ.num = 1;

  OBJ2.what = 0;

  } else if (arguments[2]-arguments[1]<=time) {

  if (Key.getCode() == arr[OBJ2.what+1]) {

  OBJ2.what++;

  }

  if (OBJ2.what == arr.length-1) {

  func_(prop, oldVal, newVal, mid_val);

  OBJ.num = 0;

  OBJ2.what = 0;

  }

  }

  }

  }

  }

  function watch(Obj:Object, val, string:String, func:Function, mid_val) {

  if (Obj.once_run == undefined) {

  Obj.once_run = 1;

  if (Obj == undefined) {

  var Obj = {};

  Obj.val;

  }

  if (mid_val == undefined) {

  mid_val = 0;

  }

  var Watcher:Function = function (prop, oldVal, newVal, mid_val) {

  func(prop, oldVal, newVal, mid_val);

  if (newVal == "unwatch") {

  m_obj.unwatch();

  }

  return newVal;

  };

  Obj.watch(string, Watcher, mid_val);

  }

  }

  }

  在fla文件的调用方法如下:

  arr = [37, 40, 39];

  function func() {

  //左-下-右

  trace("第一式");

  }

  arr2 = [37, 38];

  function func_2() {

  //左-上

  trace("第二式");

  }

  this.createEmptyMovieClip("mc1", getNextHighestDepth());

  this.createEmptyMovieClip("mc2", getNextHighestDepth());

  var key_func1 = new key_func(arr2, ob1, ob2, mc2, func, 300);

  var key_func2 = new key_func(arr, ob3, ob4, mc1, func_2, 200);

分享打印返回


动画知识Animation knowledge

广州形动动画设计有限公司

电话:020-87612322

传真:020-87615976

手机:13570023373

Q Q: 853033818

邮箱:853033818@qq.com

地址:广州市越秀区达道路16号

最新动态

形动动画承接以下业务:flash制作、动漫制作、二维动画制作、2d动画设计,如有这方面的需要,请与我们联系:020-87612322!

Copyright © 2007-2014 广州形动动画设计有限公司  网站备案/许可证号:粤ICP备17050071号-1

业务咨询:020-87612322  招聘热线:020-87615976  地址:中国·广东省广州市越秀区东山街道寺右新马路108号丰伟大厦A座7楼