语录提交--登陆--注册--论坛交流--站长博客

键盘连招的flash组合键函数

[作者:来自网络][日期:2007-12-28][导航:Flash教程 >> 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);

下载:

http://www.popocom.com/364728230/FileDownload/D67B42D3F851A048.aspx

http://www.popocom.com/364728230/FileDownload/4F31FB732AF24522.aspx

[文章热度:]


上一页:flash贪吃蛇游戏制作

下一页:flash跳跳战 单机源码

最新话题

网站导航

搜索

网站公告


Copyright 2007 51as.com. Some Rights Reserved.
鄂ICP备07003189号

Powered by: KingCMS 5.0.1.0217