Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   как выйти из функции (прервать ее выполнение)? (http://www.flasher.ru/forum/showthread.php?t=124405)

loover 29.04.2009 01:02

как выйти из функции (прервать ее выполнение)?
 
есть функция следующего вида:
Код AS3:

private function zzz():void
{
  if (z == 0)
  {
    y = 1;
  } else if (z == 1)
  {
    y = 2;
  }
 i = y + 5;
}

т.е. для разных условий выполняется одно и тоже действие. а как сделать, чтобы для одного из условий выполнялось это же действие, но с другими параметрами и после его выполнения не выполнялось общее действие? что-то типа:
Код AS3:

private function zzz():void
{
  if (z == 0)
  {
    y = 1;
  } else if (z == 1)
  {
    y = 2;
    i = y + 10;
    //exit
  }
 i = y + 5;
}


DarkLight 29.04.2009 01:08

return?

insected 29.04.2009 01:09

re***n

loover 29.04.2009 01:11

оно.
после поста нашел у себя неточность:после этого общего действия есть еще одно. как к нему "перепрыгнуть"? у меня довольно длинный список условий, а измененное действие требуется лишь для двух.

VVall 29.04.2009 01:40

Нужно сформулировать код таким образом, чтобы прыгать не пришлось - если приходится, значит код плохо написан. А так - http://www.ericfeminella.com/blog/20...tement-in-as3/

Stargazer 29.04.2009 01:50

Цитата:

у меня довольно длинный список условий, а измененное действие требуется лишь для двух.
Цитата:

Нужно сформулировать код таким образом, чтобы прыгать не пришлось - если приходится, значит код плохо написан
Самый простой способ - завести дополнительную переменную, которая будет работать "флагом" (true/false). Где-то ранее (когда вам нужно) вы устанавливаете эту переменную в нужное вам значение. А потом в нужном месте делаете проверку условия.

serenkiy 29.04.2009 02:10

можно использовать break совместно с метками (label):
Код AS3:

private function zzz():void
{
  metka: {
    if (z == 0)
    {
      y = 1;
    } else if (z == 1)
    {
      y = 2;
      i = y + 10;
      break metka;
    }
    i = y + 5;
  }
}


loover 29.04.2009 02:49

заюзаю break. мне полезно )
а можно ли сделать так: переменной задать другое значение в функции, а после завершения функции вернуть ее начальное значение?

insected 29.04.2009 10:56

Как уже сказал VVall, нужно организовывать код таким образом, чтобы не нужно было прыгать никуда. Выделите условный код в функции и оперируйте ими. Писать нужно так, чтобы код ЧИТАЛСЯ, кто будет разбираться в ваших прыжках?

Stargazer 29.04.2009 13:52

Цитата:

Сообщение от insected (Сообщение 816338)
кто будет разбираться в ваших прыжках?

Даже более того. Если вы начнёте писать что-то хоть немного сложнее, а потом захотите вернуться к написанному спустя месяц-два - то вы голову сломаете, пока разберётесь, что куда и почему у вас прыгает.

Поэтому, если планируете что-то делать на флеш - не используйте такие прыжки никогда (кроме, разве что, необходимости прервать двойной цикл).


Часовой пояс GMT +4, время: 01:00.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.