KONAMI code在柔性 [英] konami code in flex
问题描述
什么是执行KONAMI code到Flex应用程序的最佳方法是什么?
我想创建一个组件,将其添加在我所有的proyects,只是为了好玩。
感谢
更新:我做了一个简单的组件,这要归功于ZaBlanc
< XML版本=1.0编码=UTF-8&GT?;
< MX:UIComponent的xmlns:MX =http://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 =http://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屋!