KONAMI code在柔性 [英] konami code in flex

查看:107
本文介绍了KONAMI code在柔性的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

什么是执行KONAMI code到Flex应用程序的最佳方法是什么?

我想创建一个组件,将其添加在我所有的proyects,只是为了好玩。

感谢

更新:我做了一个简单的组件,这要归功于ZaBlanc

 < XML版本=1.0编码=UTF-8&GT?;
< MX:UIComponent的xmlns:MX =htt​​p://www.adobe.com/2006/mxml的creationComplete =的init()>
    < MX:元数据>
    [事件(名称=成功,键入=对象类型:flash.events.Event)
    < / MX:元数据>
    < MX:脚本>
    <![CDATA [

    //了 - 上 - 下 - 下 - 左 - 右 - 左 - 右-B-A
    公共静态常量KONAMI_ code:字符串=UUDDLRLRBA;

    		// 签名
    私人VAR signatureKeySequence:字符串=;

    私有函数的init():无效{
    systemManager.stage.addEventListener(KeyboardEvent.KEY_DOWN,的onkeydown);
    }

    私有函数的onkeydown(事件:KeyboardEvent的):无效{
    VAR键code:INT = event.key code;

    开关(钥匙code){
    案例Keyboard.UP:
    signatureKeySequence + =U;
    		            打破;

    案例Keyboard.DOWN:
    signatureKeySequence + =D;
    		            打破;

    案例Keyboard.LEFT:
    signatureKeySequence + =L;
    		            打破;

    案例Keyboard.RIGHT:
    signatureKeySequence + =R;
    		            打破;

    案例66://Keyboard.B只为AIR:/
    signatureKeySequence + =B;
    		            打破;

    案例65://Keyboard.A只为AIR太:(
    signatureKeySequence + =A;
    		            打破;

    		        默认:
    signatureKeySequence =;
    		            打破;
    }

    //作物序列
    signatureKeySequence = signatureKeySequence.substr(0,KONAMI_ code.length);

    //检查KONAMI code
    如果(signatureKeySequence == KONAMI_ code){
    则dispatchEvent(新的事件(成功));
    signatureKeySequence =;
    }

    }
    ]]≥
    < / MX:脚本>

< / MX:UIComponent>
 

要测试它

 < XML版本=1.0编码=UTF-8&GT?;
< MX:应用的xmlns:MX =htt​​p://www.adobe.com/2006/mxml布局=垂直的xmlns:KONAMI code =。KONAMI code *>
    < MX:脚本>
    <![CDATA [
    进口mx.controls.Alert;
    ]]≥
    < / MX:脚本>
    < KONAMI code:科乐美codeCatch成功=Alert.show('+ 30的生命!')/>
< / MX:用途>
 

解决方案

一个状态机是有趣的写,但在这种情况下,我会用一个签名模式去。根据您希望把处理器(该组件的阶段),这里的一些code应该工作,虽然你也许可以将其拧紧(当然定制您的具体需求):

  //向上向上向下向下左 - 右 - 左 - 右 -  BA
公共静态常量KONAMI_ code:字符串=UUDDLRLRBA;

// 签名
私人VAR signatureKeySequence:字符串=;

私有函数的onkeydown(事件:KeyboardEvent的):无效{
    VAR键code:INT = event.key code;

    开关(钥匙code){
        案例Keyboard.UP:
            signatureKeySequence + =U;
            打破;

        案例Keyboard.DOWN:
            signatureKeySequence + =D;
            打破;

        案例Keyboard.LEFT:
            signatureKeySequence + =L;
            打破;

        案例Keyboard.RIGHT:
            signatureKeySequence + =R;
            打破;

        案例Keyboard.B:
            signatureKeySequence + =B;
            打破;

        案例Keyboard.A:
            signatureKeySequence + =A;
            打破;

        默认:
            signatureKeySequence =;
            打破;
    }

    //作物序列
    signatureKeySequence = signatureKeySequence.substr(0,KONAMI_ code.length);

    //检查KONAMI code
    如果(signatureKeySequence == KONAMI_ code){
        // 30生命!
    }
}
 

What would be the best way to implement the konami code into a flex application?

I want to create a component to add it on all my proyects, just for fun.

thanks

UPDATE: I made a simple component, thanks to ZaBlanc

<?xml version="1.0" encoding="utf-8"?>
<mx:UIComponent xmlns:mx="http://www.adobe.com/2006/mxml" creationComplete="init()">
    <mx:Metadata>
    	[Event(name="success", type="flash.events.Event")]
    </mx:Metadata>
    <mx:Script>
    	<![CDATA[

    		// up-up-down-down-left-right-left-right-B-A
    		public static const KONAMI_CODE:String = "UUDDLRLRBA";

    		// signature
    		private var signatureKeySequence:String = "";

    		private function init():void{
    			systemManager.stage.addEventListener(KeyboardEvent.KEY_DOWN, onKeyDown);
    		}

    		private function onKeyDown(event:KeyboardEvent):void{
    			var keyCode:int = event.keyCode;

    		    switch (keyCode) {
    		        case Keyboard.UP:
    		            signatureKeySequence += "U";
    		            break;

    		        case Keyboard.DOWN:
    		            signatureKeySequence += "D";
    		            break;

    		        case Keyboard.LEFT:
    		            signatureKeySequence += "L";
    		            break;

    		        case Keyboard.RIGHT:
    		            signatureKeySequence += "R";
    		            break;

    		        case 66: //Keyboard.B only for AIR :/
    		            signatureKeySequence += "B";
    		            break;

    		        case 65: //Keyboard.A only for AIR too :(
    		            signatureKeySequence += "A";
    		            break;

    		        default:
    		            signatureKeySequence = "";
    		            break;
    		    }

    		    // crop sequence
    		    signatureKeySequence = signatureKeySequence.substr(0, KONAMI_CODE.length);

    		    // check for konami code
    		    if (signatureKeySequence == KONAMI_CODE) {
    		        dispatchEvent(new Event("success"));
    		        signatureKeySequence = "";
    		    }

    		}
    	]]>
    </mx:Script>

</mx:UIComponent>

to test it

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="vertical" xmlns:konamicode="konamicode.*">
    <mx:Script>
    	<![CDATA[
    		import mx.controls.Alert;
    	]]>
    </mx:Script>
    <konamicode:KonamiCodeCatch success="Alert.show('+30 lives!!!')" />
</mx:Application>

解决方案

A state machine is fun to write, but in this case I'd go with a signature pattern. Depending on where you want to put the handler (on the stage of the component), here's some code that should work, though you can probably tighten it (and of course customize it to your specific need):

// up-up-down-down-left-right-left-right-B-A
public static const KONAMI_CODE:String = "UUDDLRLRBA";

// signature
private var signatureKeySequence:String = "";

private function onKeyDown(event:KeyboardEvent):void {
    var keyCode:int = event.keyCode;

    switch (keyCode) {
        case Keyboard.UP:
            signatureKeySequence += "U";
            break;

        case Keyboard.DOWN:
            signatureKeySequence += "D";
            break;

        case Keyboard.LEFT:
            signatureKeySequence += "L";
            break;

        case Keyboard.RIGHT:
            signatureKeySequence += "R";
            break;

        case Keyboard.B:
            signatureKeySequence += "B";
            break;

        case Keyboard.A:
            signatureKeySequence += "A";
            break;

        default:
            signatureKeySequence = "";
            break;
    }

    // crop sequence
    signatureKeySequence = signatureKeySequence.substr(0, KONAMI_CODE.length);

    // check for konami code
    if (signatureKeySequence == KONAMI_CODE) {
        // 30 lives!
    }
}

这篇关于KONAMI code在柔性的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆