actionscript-3 – konami代码
发布时间:2020-12-15 19:51:59 所属栏目:百科 来源:网络整理
导读:将konami代码实现到flex应用程序中的最好方法是什么? 我想创建一个组件将其添加到我所有的proyects,只是为了好玩。 谢谢 更新:我做了一个简单的组件,感谢ZaBlanc ?xml version="1.0" encoding="utf-8"?mx:UIComponent xmlns:mx="http://www.adobe.com/20
将konami代码实现到flex应用程序中的最好方法是什么?
我想创建一个组件将其添加到我所有的proyects,只是为了好玩。 谢谢 更新:我做了一个简单的组件,感谢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> 测试它 <?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> 解决方法
状态机是有趣的写,但在这种情况下,我会去签名模式。根据你想放置处理程序(在组件的阶段)的位置,这里有一些代码应该工作,虽然你可以收紧它(当然,根据你的特定需要定制它):
// 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! } } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |