• Flash AS2.0中复杂按键操作的捕获


    在我的flash游戏《牧场物语》中的按键操作是比较复杂的,我们用的语言是AS2.0,它的捕获按键并不像我们想象的那样。1当某个键按下不松开的话它会不断的触发该按键事件,但事实我们只想让它执行一次我们想要执行的代码;2当我们想要使用组合键,如C+X,而且是必须C在X前先按下才会触发我们的代码,这个也不是两行代码就能解决的;3对于有些按键,如方向键,我们当然是希望它在按下后不断的执行一些代码,但并不想它跑的那样快,而是减慢速度。对于要想使用这些比较复杂的按键就要下番功夫了,下面是我的游戏中使用解决此问题的方案,供参考,同时也希望得到更好的方案给我分享。
    P.S.代码中的keyLock变量表示操作模式,在游戏、帮助、工具葙等里面它们都有方向键,但很显然是不一样的操作,需要变量来区分它们。

     1onClipEvent (enterFrame) {
     2    if (Key.isDown(67)) {//2-8:C键按下,kissC=1表示C键此时正保持按下状态,kissC=0表示C键此时正保持松开状态,以下同
     3        if (_root.kissC == 0{
     4            _root.kissC = 1;
     5        }

     6    }
     else if (_root.kissC == 1{
     7        _root.kissC = 0;
     8    }

     9    if (Key.isDown(90)) {//9-15:Z键由松开状态变成按下状态,执行相应代码并止执行一次
    10        if (_root.kissZ == 0{
    11            _root.functionKeyZ();
    12            _root.kissZ = 1;
    13        }

    14    }
     else if (_root.kissZ == 1{
    15        _root.kissZ = 0;
    16    }
     else if (Key.isDown(88)) {//16-29:X键操作
    17        if (_root.kissC == 0{//17-21:单纯的X键按下操作
    18            if (_root.kissX == 0{
    19                _root.functionKeyX();
    20                _root.kissX = 1;
    21            }

    22        }
     else {//22-24:组合键C+X
    23            _root.changeFurnishment();
    24        }

    25    }
     else if (_root.kissX == 1{
    26        _root.kissX = 0;
    27        if(_root.keyLock == 4){
    28            _root.furnishmentEnd = 1;
    29        }

    30    }
     else if (Key.isDown(65)) {//30-36:A键,同Z键
    31        if (_root.kissA == 0{
    32            _root.functionKeyA();
    33            _root.kissA = 1;
    34        }

    35    }
     else if (_root.kissA == 1{
    36        _root.kissA = 0;
    37    }
     else if (Key.isDown(27)) {//37-44:Esc键,同Z键
    38        if (_root.kissEsc == 0{
    39            _root.functionKeyEsc();
    40            _root.kissEsc = 1;
    41        }

    42    }
     else if (_root.kissEsc == 1{
    43        _root.kissEsc = 0;
    44    }

    45    if (Key.isDown(37)) {//45-53:左方向键按下,在不同的操作模式下执行不同的代码,同时变量kissLURD用来减慢执行代码的速度,每隔5次执行一次,以下同理
    46        if (_root.keyLock == 0 || _root.keyLock == 1{
    47            _root.functionKeyLeft();
    48        }
     else if (_root.keyLock == 2{
    49            if (_root.kissLURD == 0{
    50                _root.showInfo.goLeft();
    51            }

    52            _root.kissLURD = (_root.kissLURD+1)%5;
    53        }

    54    }
     else if (Key.isDown(38)) {
    55        if (_root.keyLock == 0 || _root.keyLock == 1{
    56            _root.functionKeyUp();
    57        }
     else if (_root.keyLock == 2{
    58            if (_root.kissLURD == 0{
    59                _root.showInfo.goUp();
    60            }

    61            _root.kissLURD = (_root.kissLURD+1)%5;
    62        }

    63    }
     else if (Key.isDown(39)) {
    64        if (_root.keyLock == 0 || _root.keyLock == 1{
    65            _root.functionKeyRight();
    66        }
     else if (_root.keyLock == 2{
    67            if (_root.kissLURD == 0{
    68                _root.showInfo.goRight();
    69            }

    70            _root.kissLURD = (_root.kissLURD+1)%5;
    71        }

    72    }
     else if (Key.isDown(40)) {
    73        if (_root.keyLock == 0 || _root.keyLock == 1{
    74            _root.functionKeyDown();
    75        }
     else if (_root.keyLock == 2{
    76            if (_root.kissLURD == 0{
    77                _root.showInfo.goDown();
    78            }

    79            _root.kissLURD = (_root.kissLURD+1)%5;
    80        }

    81    }
     else {
    82        _root.kissLURD = 0;
    83    }

    84}

    85

    作者:Rick Carter
    出处:http://pains.cnblogs.com/
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

  • 相关阅读:
    014_Python3 循环语句
    013_Python3 条件控制
    012_Python3 斐波纳契数列 + end 关键字
    011_Python3 集合
    010_Python3 字典
    009_Python3 元组
    008_Python3 列表
    006_Python3 数字(Number)
    005_Python3 运算符
    bzoj3160
  • 原文地址:https://www.cnblogs.com/pains/p/932866.html
Copyright © 2020-2023  润新知