OSX 10.7 だと Caps Lock 時に shift が 2 回反応してしまう様子。
Windows 環境ではちゃんと動くようですが、Mac OS X 10.7 では PPAPI を除いて Caps Lock 時に shift を押すと、
押した瞬間:keyDown(shiftKey:true) -> keyUp(shiftKey:true!!)
離した瞬間 : keyDown(shiftKey:false!!) -> keyUp(shiftKey:false)
の順番で一気にイベントが送出されるバグがあるようです。
対策としては、shift が押された場合は KeyboardEvent.type と KeyboardEvent.shiftKey を比較してあげると回避できそう。
♥0 |
Line 38 |
Modified 2013-05-31 01:27:36 |
MIT License
archived:2017-03-20 05:49:25
ActionScript3 source code
/**
* Copyright mezumona ( http://wonderfl.net/user/mezumona )
* MIT License ( http://www.opensource.org/licenses/mit-license.php )
* Downloaded from: http://wonderfl.net/c/2eBg
*/
package {
import flash.display.Sprite;
import flash.display.StageScaleMode;
import flash.events.Event;
import flash.events.KeyboardEvent;
import flash.text.*;
import flash.ui.Keyboard;
public class ShiftKeyTester extends Sprite {
public function ShiftKeyTester()
{
stage.scaleMode = StageScaleMode.NO_SCALE;
var tf:TextField = new TextField();
tf.width = stage.stageWidth;
tf.height = stage.stageHeight;
addChild(tf);
_tf = tf;
stage.addEventListener(KeyboardEvent.KEY_DOWN, keyHandler);
stage.addEventListener(KeyboardEvent.KEY_UP, keyHandler);
stage.addEventListener(Event.RESIZE, function (event:Event):void
{
tf.width = stage.width;
tf.height = stage.height;
});
}
private var _tf:TextField;
private function keyHandler(event:KeyboardEvent):void
{
if (event.keyCode == Keyboard.SHIFT) {
_tf.appendText(event.type + ": shiftKey = " + event.shiftKey);
if (event.type == KeyboardEvent.KEY_DOWN ? !event.shiftKey : event.shiftKey) {
_tf.appendText("!!");
}
_tf.appendText("\n");
_tf.scrollV = _tf.maxScrollV;
}
}
}
}