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

    −113

    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
    public override function match(xdoc:XML):Boolean {
    			var newsearch:String = search;
    			var xpathnodes:Array = new Array();
    			while(true) {
    				var xpathnode:String = splitnodes.exec(newsearch);
    				if(xpathnode) {
    					xpathnodes.push(xpathnode);
    				} else {
    					break;
    				}
    				newsearch = newsearch.substring(newsearch.search(xpathnode) + xpathnode.length);
    			}
    			return matchXPath(xpathnodes, xdoc);
    		}

    Фантастическая реализация String.split() за тем же авторством. :)

    wvxvw, 21 Июля 2011

    Комментарии (5)
  2. ActionScript / Говнокод #7307

    −111

    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
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    private function nodeCompare(searchNode:XML, findNode:XML):Boolean {
    			//trace(findNode.nodeName);
    			if(searchNode.localName() != findNode.localName()) {
    				//trace(searchNode.nodeName + "!=" + curnode);
    				return false;
    			}
    			if(findNode.namespace() != searchNode.namespace()) {
    				return false;
    			}
    			if(searchNode.text() && findNode.text() != searchNode.text()) {
    				return false;
    			}
    			for each(var attr:Object in searchNode.attributes) {
    				//trace ("**" + attr); // um, that's not helpful
    			}
    			var found:Boolean = false;
    			for each(var searchSub:XML in searchNode.children()) {
    				for each(var findSub:XML in findNode.children()) {
    					if(nodeCompare(searchSub, findSub)) {
    						found = true;
    						break;
    					}
    				}
    				if(!found) return false;
    				found = false;
    			}
    			//trace("match!");
    			return true;
    		}

    Тот же источник. Явно задумка была реализовать по-новой XML.contains() метод, но не получилось :)

    wvxvw, 21 Июля 2011

    Комментарии (0)
  3. ActionScript / Говнокод #7305

    −115

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    [code]		public function send(data:String):void {
    			trace("OUT: " + data);
    			dispatchEvent(new StreamEvent(StreamEvent.COMM_OUT, false, false, null, data));
    			try {
    				socket.writeUTFBytes(data);
    				socket.flush();
    			} catch (error:Error) {
    				trace("Error writing to socket: " + error);
    				dispatchEvent(new StreamEvent(StreamEvent.DISCONNECTED, false, false, null));
    			}
    		}[/code]

    Какая-то опенсорсная реализация XMPP. Для тех, кто не в курсе socket.writeUTFBytes(null) выкинет ошибку.

    wvxvw, 21 Июля 2011

    Комментарии (10)
  4. ActionScript / Говнокод #7179

    −106

    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
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    31. 31
    32. 32
    33. 33
    34. 34
    35. 35
    36. 36
    37. 37
    38. 38
    39. 39
    40. 40
    41. 41
    42. 42
    43. 43
    44. 44
    45. 45
    46. 46
    47. 47
    48. 48
    49. 49
    50. 50
    51. 51
    52. 52
    53. 53
    54. 54
    55. 55
    56. 56
    57. 57
    58. 58
    59. 59
    60. 60
    61. 61
    62. 62
    63. 63
    64. 64
    65. 65
    66. 66
    67. 67
    68. 68
    69. 69
    70. 70
    71. 71
    72. 72
    73. 73
    74. 74
    75. 75
    public function Rotate():void
    		{
    			switch(type)
    			{
    				case 'line':
    					if (figure[0][1])
    					{
    						figure = [[1], [1], [1], [1]];
    						position.y += 1;
    						position.x -= 1;
    					}
    					else
    					{
    						figure = [[1, 1, 1, 1]];
    						position.y -= 1;
    						position.x += 1;
    					}
    					break;
    				case 'square':
    					return;
    					break;
    				case 'pyramide':
    					if (!figure[0][0] && figure[1][0] && figure.length == 2)
    					{
    						figure = [[0, 1], [1, 1], [0, 1]];
    					}
    					else if (!figure[0][0] && figure[0][1] && figure.length == 3)
    					{
    						figure = [[1, 1, 1], [0, 1, 0]];
    					}
    					else if (figure[0][0] && figure[0][1] && figure.length == 2)
    					{
    						figure = [[1, 0], [1, 1], [1, 0]];
    					}
    					else if (figure[0][0] && !figure[0][1] && figure.length == 3)
    					{
    						figure = [[0, 1, 0], [1, 1, 1]];
    					}
    					break;
    				case 'lL':
    					if (figure[0][0] && !figure[0][1])
    						figure = [[0, 0, 1], [1, 1, 1]];
    					else if (!figure[0][0] && !figure[0][1])
    						figure = [[1, 1], [0, 1], [0, 1]];
    					else if (figure[0][0] && figure[0][1] && figure.length == 3)
    						figure = [[1, 1, 1], [1, 0, 0]];
    					else if (figure[0][0] && figure[0][1] && figure.length == 2)
    						figure = [[1, 0], [1, 0], [1, 1]];
    					break;
    				case 'rL':
    					{
    					if (!figure[0][0] && figure[0][1])
    						figure = [[1, 0, 0], [1, 1, 1]];
    					else if (figure[0][0] && !figure[0][1])
    						figure = [[1, 1], [1, 0], [1, 0]];
    					else if (figure[0][0] && figure[0][1] && figure.length == 3)
    						figure = [[1, 1, 1], [0, 0, 1]];
    					else if (figure[0][0] && figure[0][1] && figure.length == 2)
    						figure = [[0, 1], [0, 1], [1, 1]];
    					}
    					break;
    				case 'lZ':
    					if (figure[0][0] && !figure[0][1])
    						figure = [[0, 1, 1], [1, 1, 0]];
    					else if (!figure[0][0] && figure[0][1])
    						figure = [[1, 0], [1, 1], [0, 1]];
    					break;
    				case 'rZ':
    					if (!figure[0][0] && figure[0][1])
    						figure = [[1, 1, 0], [0, 1, 1]];
    					else if (figure[0][0] && figure[0][1])
    						figure = [[0, 1], [1, 1], [1, 0]];
    					break;
    			}
    		}

    "Поворот" фигур в тетрисе

    KirAmp, 06 Июля 2011

    Комментарии (14)
  5. ActionScript / Говнокод #7155

    −109

    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
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    public function UiAnalyticVO()
    		{
    		}
    		
    		public function get ageGroup():String
    		{
    			var ageGroup:String;
    // Данные о возрасте пользователя никогда не отправляются, важно только
    // чтобы он был старше 18 (хз зачем).
    // Возраст пользователя устанавливается 1 раз за всю жизнь приложения,
    // даже если у него случится день Рождения - об этом приложение не
    // узнает.
    			if (_age)
    			{
    				ageGroup = _age < 18 ? "1":"2";
    			}
    			else
    			{
    				ageGroup = "0";//undefined age
    			}
    			return ageGroup;
    		}
    . . .
    // эту функцию вызывают много раз в секунду
    		protected function sendAnalytics(categoryType:String, evtType:String):void
    		{
    // жизненный цикл этого объекта - ровно пока не отработает эта функция, 
    // потом он жертва мусорщика
    			var analyticsVo:UiAnalyticVO = new UiAnalyticVO();
    . . .

    Тут прийдется немного нарпячь воображение, чтобы понять, что происходит. Kак бы много всего одновременно... (и даже больше, но для того, чтобы объяснить на сколько все плохо пришлось бы очень много постить. Я думаю, этого должно хватить :)

    wvxvw, 05 Июля 2011

    Комментарии (8)
  6. ActionScript / Говнокод #7087

    −113

    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
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    31. 31
    32. 32
    33. 33
    34. 34
    35. 35
    36. 36
    37. 37
    38. 38
    39. 39
    40. 40
    41. 41
    42. 42
    43. 43
    44. 44
    45. 45
    46. 46
    47. 47
    48. 48
    49. 49
    50. 50
    51. 51
    52. 52
    53. 53
    private function formatResponse( map:Dictionary ):String
    		{
    // В этой функции было больше строчек, я оставил только те, где используется map
    			ha1_1.writeUTFBytes( map.username + ":" + map.realm + ":" + password );
    			ha1_2.writeUTFBytes( ":" + map.nonce + ":" + map.cnonce );
    			ha2.writeUTFBytes( "AUTHENTICATE:" + map[ "digest-uri" ] );
    			b.writeUTFBytes( sha1 + ":" + map.nonce + ":" + map.nc + ":" + map.cnonce + ":" + map.qop + ":" + sha2 );
    			return Hex.fromArray( b );
    		}
    
    		override public function handleChallenge( stage:int, challenge:XML ):XML
    		{
    			var decodedChallenge:String = Base64.decode( challenge );
    			var challengeKeyValuePairs:Array = decodedChallenge.replace( /\"/g, "").split( "," );
    			var challengeMap:Dictionary = new Dictionary();
    			for each( var keyValuePair:String in challengeKeyValuePairs )
    			{
    				var keyValue:Array = keyValuePair.split( "=" );
    				challengeMap[ keyValue[ 0 ] ] = keyValue[ 1 ];
    			}
    
    			var resp:XML = new XML( response );
    			resp.setNamespace( DigestMD5.NS );
    
    			if( !challengeMap.rspauth )
    			{
    				var responseMap:Dictionary = new Dictionary();
    				responseMap.username = connection.username;
    				responseMap.realm = challengeMap.realm ? challengeMap.realm : "";
    				responseMap.nonce = challengeMap.nonce;
    				responseMap.cnonce = new Date().time;
    				responseMap.nc = "00000001";
    				responseMap.qop = challengeMap.qop ? challengeMap.qop : "auth";
    				responseMap[ "digest-uri" ] = "xmpp/" + ( challengeMap.realm ? challengeMap.realm : connection.domain );
    				responseMap.charset = challengeMap.charset;
    				responseMap.response = formatResponse( responseMap );
    
    				var challengeResponse:String = "username=\"" + responseMap.username + "\"";
    				if( challengeMap.realm ) challengeResponse += ",realm=\"" + responseMap.realm + "\"";
    				challengeResponse += ",nonce=\"" + responseMap.nonce + "\"";
    				challengeResponse += ",cnonce=\"" + responseMap.cnonce + "\"";
    				challengeResponse += ",nc=" + responseMap.nc;
    				challengeResponse += ",qop=" + responseMap.qop;
    				challengeResponse += ",digest-uri=\"" + responseMap[ "digest-uri" ] + "\"";
    				challengeResponse += ",response=" + responseMap.response;
    				challengeResponse += ",charset=" + responseMap.charset;
    				challengeResponse = Base64.encode( challengeResponse );
    
    				resp.setChildren( challengeResponse );
    			}
    
    			return resp;
    		}

    Тут довольно много читать, но если вы не побоитесь и все же осилите, то откроете для себя еще один уголок прекрасного. Часть кода из первой функции вырезана т.как приниципиального значения не имела. Код явно переписан с чего-то похожего на Java человеком который ни разу не открыл маны по AS3.
    Целиком обозреть бессмертное творение можно тут: http://fisheye.igniterealtime.org/browse/~raw,r=12385/sparkweb/trunk/SparkWeb2/src/org/igniterealtime/xiff/auth/DigestMD5.as

    wvxvw, 27 Июня 2011

    Комментарии (5)
  7. ActionScript / Говнокод #6906

    −109

    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
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    var q=0.15
    var w=false
    stroka.alpha=0
    knopka.addEventListener(MouseEvent.MOUSE_OVER,qwe)
    function qwe(e:MouseEvent){
    w=true
    }
    knopka.addEventListener(MouseEvent.MOUSE_OUT,qwe2)
    function qwe2(e:MouseEvent){
    w=false
    }
    stage.addEventListener(Event.ENTER_FRAME,qw)
    function qw(e:Event):void{
    if(w==true){
     stroka.alpha+=q
    }
    if(w==false){
     stroka.alpha-=q
    }
    if(stroka.alpha>=1){
     stroka.alpha=1
    }
    if(stroka.alpha<=0){
     stroka.alpha=0
    }
    }

    Поделка все-того же любителя ENTER_FRAME'а. На этот раз попытка сделать плавное появление/исчезновение объекта при наведении на него мышкой.

    KirAmp, 09 Июня 2011

    Комментарии (9)
  8. ActionScript / Говнокод #6802

    −111

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    stop()
    stage.addEventListener(Event.ENTER_FRAME,qw)
    function qw(e:Event):void{
    if(q.value=="tekst"){
     gotoAndStop(2)
    }
    }

    Event.CHANGE нам не поможет,
    Нам поможет 'enterFrame'

    KirAmp, 31 Мая 2011

    Комментарии (10)
  9. ActionScript / Говнокод #6793

    −108

    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
    16. 16
    17. 17
    18. 18
    19. 19
    addEventListener(Event.ENTER_FRAME, function(e){clip.mov.apply(clip,[e])});
    
    clip.mov = function(e:Event):void{
    	if(!this.is_mov && !this.is_mov_end) return;
    		this.ii++;
    		if(this.ii == this.speed){
    			this.clip.x = this.end_x;
    			this.clip.y = this.end_y;
    		if(this.is_mov_end){
      			this.is_mov = false;
      			this.is_mov_end = false;
    		} else {
      			this.getNewCoord.apply(this);
    		}
     	return;
    	}
    	this.clip.x = this.start_x + int((this.end_x - this.start_x)/this.speed)*this.ii + int(Math.random()*2)-1;
    	this.clip.y = this.start_y + int((this.end_y - this.start_y)/this.speed)*this.ii + int(Math.random()*2)-1;
    }

    Дело было вечером, делать было нечего...
    Здесь имеет место вызов функции с подменой this.

    kyzi007, 31 Мая 2011

    Комментарии (3)
  10. ActionScript / Говнокод #6729

    −110

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    var vremya=15
    var tim=0
    var FpS=24//ваше fps
    var intarval=1
    stage.addEventListener(Event.ENTER_FRAME,qwer)
    function qwer(e:Event){
    t+=interval
    if(tim>vremya*FpS){
    interval=0
    trace("15 сукунд прошло!!!")
    }
    }

    Как сделать 15-секундную задержку? анонимус подскажет!

    KirAmp, 22 Мая 2011

    Комментарии (21)