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

    −91.2

    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
    function upHandler(event:MouseEvent):void 
    {
            //r_arr[event.currentTarget.index].stopDrag();
    				
    	event.currentTarget.stopDrag();
    				
            //r_arr[event.currentTarget.index].removeChildAt(2);
    
    	if((r_arr[event.currentTarget.index].x>550)||(r_arr[event.currentTarget.index].x<160)||(r_arr[event.currentTarget.index].y>400)||(r_arr[event.currentTarget.index].y<0))
    	{
    	        r_arr[event.currentTarget.index].x=546;
    		r_arr[event.currentTarget.index].y=(r_arr[event.currentTarget.index].index+1)*30;
    	}
    }

    Сама семантика малопримечательна. Вся соль в способе адресации к объекту массива r_arr при совершении события мыши прямо над этим же объектом. Методы и свойства объекта достаются через ***у по индексу из-за пазухи: r_arr[event.currentTarget.index].removeChildAt(2)
    вместо достаточного: event.currentTarget.removeChildAt(2)

    Запостил: t8apb, 17 Сентября 2009

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

    • Ваши знания ас3 чуть больше автора этого кода. event.currentTarget имеет тип Object, у которого нет никакого метода removeChildAt(), который есть у DisplayObjectContainer-a, а значит компилятор вам намекнет на это, конечно если вы не выключили сообщения об ошибках. Правильнее сделать var doc:DisplayObjectContainer = event.currentTarget as DisplayObjectContainer; if (doc) doc.removeChildAt(2)
      Ответить

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