因为工作需要写了个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);
下载:
http://www.popocom.com/364728230/FileDownload/D67B42D3F851A048.aspx
http://www.popocom.com/364728230/FileDownload/4F31FB732AF24522.aspx
[文章热度:]
上一页:flash贪吃蛇游戏制作
下一页:flash跳跳战 单机源码