Note that there are some explanatory texts on larger screens.

plurals
  1. PO
    primarykey
    data
    text
    <p>So I made a little test and came up with this. It seems to be working pretty well right now. I haven't tested it in extreme lengths, but it could get you started. I'll leave it up to you to implement into your own code. Just copy/paste into a new AS3 document and watch the console</p> <pre><code>import flash.events.KeyboardEvent; stage.addEventListener(KeyboardEvent.KEY_UP, keyPressed); var pressed :Boolean = false; var lastKeyPressed :Number = -1; var doubleTapDelay :Number = 260; //-- delay in milliseconds function keyPressed(e:KeyboardEvent):void { if (lastKeyPressed == e.keyCode &amp;&amp; pressed) trace("double tapped " + e.keyCode); lastKeyPressed = e.keyCode; pressed = true; setTimeout(function(){pressed = false},doubleTapDelay); } </code></pre> <p><strong>EDITED TO WORK WITH KEY_DOWN</strong> This seems to be working better with <code>KEY_DOWN</code></p> <pre><code>import flash.events.KeyboardEvent; stage.addEventListener(KeyboardEvent.KEY_DOWN, keyPressed); var pressed :Boolean = false; var lastKeyPressed :Number = -1; var doubleTapDelay :Number = 260; //-- delay in milliseconds function keyPressed(e:KeyboardEvent):void { stage.removeEventListener(KeyboardEvent.KEY_DOWN, keyPressed); stage.addEventListener(KeyboardEvent.KEY_UP, onKeyboardUp); if (lastKeyPressed == e.keyCode &amp;&amp; pressed) trace("double tapped " + e.keyCode); lastKeyPressed = e.keyCode; pressed = true; setTimeout(function(){pressed = false},doubleTapDelay); } function onKeyboardUp(e:KeyboardEvent):void { stage.addEventListener(KeyboardEvent.KEY_DOWN, keyPressed); } </code></pre> <p><strong>EDITED AGAIN FOR THE DEMO</strong></p> <p>DEMO: <a href="http://ronnieswietek.com/_random/dash_example.swf" rel="nofollow">http://ronnieswietek.com/_random/dash_example.swf</a></p> <p>SOURCE: <a href="http://ronnieswietek.com/_random/dash_example.fla" rel="nofollow">http://ronnieswietek.com/_random/dash_example.fla</a></p> <pre><code>import flash.events.KeyboardEvent; import com.greensock.TweenLite; import com.greensock.easing.*; import com.greensock.plugins.*; TweenPlugin.activate([BlurFilterPlugin]); stage.addEventListener(KeyboardEvent.KEY_DOWN, keyPressed); stage.addEventListener(KeyboardEvent.KEY_DOWN, permaKeyDown); var pressed :Boolean = false; var lastKeyPressed :Number = -1; var dashAmount :Number = 50; var doubleTapDelay :Number = 260; //-- delay in milliseconds function permaKeyDown(e:KeyboardEvent):void { switch (e.keyCode) { case 38: //-- up arrow char.y = char.y - 2; break; case 39: //-- right arrow char.x = char.x + 2; break; case 40: //-- down arrow char.y = char.y + 2; break; case 37: //-- left arrow char.x = char.x - 2; break; } } function keyPressed(e:KeyboardEvent):void { stage.removeEventListener(KeyboardEvent.KEY_DOWN, keyPressed); stage.addEventListener(KeyboardEvent.KEY_UP, onKeyboardUp); if (lastKeyPressed == e.keyCode &amp;&amp; pressed) { trace("double tapped " + e.keyCode); doDash(e.keyCode); } lastKeyPressed = e.keyCode; pressed = true; setTimeout(function(){pressed = false}, doubleTapDelay); } function onKeyboardUp(e:KeyboardEvent):void { stage.addEventListener(KeyboardEvent.KEY_DOWN, keyPressed); } function doDash(keyCode:Number):void { switch (keyCode) { case 38: //-- up arrow TweenLite.to(char,0,{blurFilter:{blurY:50}}); TweenLite.to(char,0.3,{blurFilter:{blurY:0},y:char.y - dashAmount,ease:Expo.easeOut}); break; case 39: //-- right arrow TweenLite.to(char,0,{blurFilter:{blurX:50}}); TweenLite.to(char,0.3,{blurFilter:{blurX:0},x:char.x + dashAmount,ease:Expo.easeOut}); break; case 40: //-- down arrow TweenLite.to(char,0,{blurFilter:{blurY:50}}); TweenLite.to(char,0.3,{blurFilter:{blurY:0},y:char.y + dashAmount,ease:Expo.easeOut}); break; case 37: //-- left arrow TweenLite.to(char,0,{blurFilter:{blurX:50}}); TweenLite.to(char,0.3,{blurFilter:{blurX:0},x:char.x - dashAmount,ease:Expo.easeOut}); break; } } </code></pre>
    singulars
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload