1. ActionScript / Говнокод #8403

    −121

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    public function onKeyDown(keyDn:uint):void  
           {  
               switch(keyDn)  
               {  
                   case 38 : isUP = true; break;  
     case 87 : isUP = true; break;
                   case 40: isDOWN = true; break; 
     case 83: isDOWN = true; break;
                   case 37 : isLEFT = true; break;
     case 65 : isLEFT = true; break; 
                   case 39 : isRIGHT = true; break;
     case 68 : isRIGHT = true; break;
       case 32 :  многоКода
       case 16 :  многоКода
           }

    копипастка с моего любимого демиарта

    Запостил: KirAmp, 02 Ноября 2011

    Комментарии (6) RSS

    • Все тот-же мучительный любитель ENTER_FRAME'а (см мои посты). Вроде постепенно эволюционирует, но тем не менее смешон
      Ответить
    • нормальный код... только ошибка есть - один ставится в true, а надо остальные в false
      Ответить
      • Неа, это велосипед на тему зажатия клавиш. Избитая для флеша тема.

        Вот, например, моя реализация велосипеда:
        package com.kiramp.keyboard {
        	import flash.events.KeyboardEvent;
        	import flash.display.Stage;
        
        	/**
        	 * @author Kirill Kosolapov
        	 */
        	public class KeyboardManager
        	{
        		private var keyArray:Vector.<Boolean> = new Vector.<Boolean>();
        
        		public function KeyboardManager(stage:Stage):void
        		{
        			for(var i:uint = 0;i<255;i++)
        				keyArray[i]=false;
        			
        			stage.addEventListener(KeyboardEvent.KEY_DOWN, KeyDownListener);
        			stage.addEventListener(KeyboardEvent.KEY_UP, KeyUpListener);
        		}
        
        		private function KeyDownListener(evt:KeyboardEvent):void
        		{
        			if (evt.keyCode > keyArray.length)
        				throw new Error('KeyCode: '+evt.keyCode); 
        			
        			keyArray[evt.keyCode] = true;
        		}
        
        		private function KeyUpListener(evt:KeyboardEvent):void
        		{
        			if(evt.keyCode > keyArray.length)
        				throw new Error('KeyCode: '+evt.keyCode);
        				
        			keyArray[evt.keyCode] = false;
        		}
        		
        		public function keyDown(key:uint):Boolean
        		{
        			return keyArray[key];
        		}
        		
        	}
        }


        Проблема заключается в том, что флеш не возвращает состояния кнопок. Отлавливать можно только по событиям. А для игр виндовые события нажатия (сначала раз в 3 сек, затем 1) недопустимы
        Ответить
        • как раз событийная модель самое оно. а в этом коде можно было обойтись и вектором только нажатых клавиш
          Ответить
    • > Гости могут высказаться только во вторник, пятницу или субботу
      А ты, Вася - пой! )
      Ответить

    Добавить комментарий