Форум программистов, компьютерный форум, киберфорум
ActionScript
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.53/15: Рейтинг темы: голосов - 15, средняя оценка - 4.53
0 / 0 / 0
Регистрация: 10.11.2012
Сообщений: 10
AS 3.0

Циклы и условия: оператор GoTo

10.11.2012, 20:32. Показов 3274. Ответов 18
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте, уважаемые форумчане, подскажите пожалуйста, есть ли в AS 3.0 оператор по действию схожий с оператором GoTo из VB (переход на нужную строку во время выполнения программы)?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
10.11.2012, 20:32
Ответы с готовыми решениями:

Описать оператор выбора, в котором при истинности второго условия выполняются действия и третьего условия тоже
помогите пожалуйста ответить на вопрос 2. Описать оператор выбора, в котором при истинности второго условия выполняются действия и...

Оператор GOTO
GOTO в топку. В нормальных языках нужны только циклы, а GOTO пусть останется только для *.bat, и *.cmd файлов.

Оператор goto
Как передать управление из одного класса в другой c помощью goto(или как то по другому)?

18
Модератор
 Аватар для TanaTiX
2936 / 1795 / 180
Регистрация: 19.02.2011
Сообщений: 6,552
10.11.2012, 21:03
Fluke1978, нет, и хорошо, что нет. ActionScript является ООП, следовательно ни один из участков кода даже не догадывается, на какой строке находится. Если нужно запустить какой-то участок кода - выделяете его в отдельный метод и вызываете там, где необходимо.
1
0 / 0 / 0
Регистрация: 03.01.2012
Сообщений: 4
10.11.2012, 21:28
нет, и хорошо, что нет
А подскажите, как тогда легко выйти из самого вложенного цикла? например когда их >3
ActionScript 3
1
2
3
4
5
6
7
8
9
while (true){
  while (true){
    while (true){
      // вот отсуда
    }
  }
}
 
//сразу сюда?
0
0 / 0 / 0
Регистрация: 10.11.2012
Сообщений: 10
10.11.2012, 21:28  [ТС]
Тогда, если не трудно, подскажите, как можно реализовать следующие действия:
"if (r>0..." не должно выполняться до тех пор, пока g из первого условного оператора не будет равно 1.25, пример кода:
ActionScript 3
1
2
3
4
5
6
7
8
9
10
11
12
13
addEventListener(Event.ENTER_FRAME, onCol);
    function onCol(event:Event):void  {
            if (g < 1.25) {
                g = g + .01;
                trace(r,g,b);
                pix.transform.colorTransform = new ColorTransform(r,g,b);
            }
            if (r > 0) {
                r = r - .01;
                trace(r);
                pix.transform.colorTransform = new ColorTransform(r,g,b);
            }
    }
и, соответственно, первый условный оператор не должен выполняться во время выполнения второго..
0
Модератор
 Аватар для TanaTiX
2936 / 1795 / 180
Регистрация: 19.02.2011
Сообщений: 6,552
10.11.2012, 22:08
Lorem, такой ситуации (сейчас смотрю на код) быть не должно (плохая практика), это не С. Относительно выхода из цикла есть инструкции return и break, другие тоже могут быть полезны. Читаем тут
Так же есть т.н. метки. Вот пример
ActionScript 3
1
2
3
4
5
6
7
8
9
var i:Number;
var j:Number;
mainLoop: for (i=0; i<10; i++) {
   for (j=0; j<10; j++) {
      if (i > 3 && j > 3) {
         break mainLoop;
      }
}
}
Добавлено через 2 минуты
Fluke1978, так
ActionScript 3
1
2
3
4
5
if(g == 1.25){//...
   if(r > 0){//...
 
   }
}
2
0 / 0 / 0
Регистрация: 10.11.2012
Сообщений: 10
10.11.2012, 22:59  [ТС]
TanaTiX, спасибо, сейчас попробую.

Добавлено через 46 минут
Ничего не получается либо я тупой, либо еще тупее, мне нужно решить такую проблему:
нужно сделать плавный переход цвета фигуры
начальный цвет 1.25,0,0 (r.g.b), далее g должен вырасти до 1.25 с шагом 0.01 итог 1.25, 1.25, 0
после r плавно уменьшается до нуля, далее 0, 1.25, 1.25 , всего 6 переходов, пока цвет снова не станет 1.25, 0, 0 и так по кругу
Пробовал с помощью операторов If (код выше) - не выходит...
Помогите, please, я только начал работать с AS 3.0.
0
Модератор
 Аватар для TanaTiX
2936 / 1795 / 180
Регистрация: 19.02.2011
Сообщений: 6,552
10.11.2012, 23:26
Вот такое придумалось.
ActionScript 3
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
package  
{
    import flash.display.Sprite;
    import flash.events.Event;
    
    /**
     * ...
     * @author TanaTiX
     */
    public class Test extends Sprite 
    {
        private static const STEP:Number = 0.01;
        private static const MAX_LIMIT:Number = 1.25;
        private static const MIN_LIMIT:Number = 0;
        private var _colors:Vector.<Number>;
        private var _direction:Boolean;
        private var _index:int;
        
        public function Test() 
        {
            addEventListener(Event.ADDED_TO_STAGE, onStage, false, 0, true);
        }
        
        private function onStage(e:Event):void 
        {
            removeEventListener(Event.ADDED_TO_STAGE, onStage);
            _colors = new Vector.<Number>();
            _colors.push(1.25, 0, 0);
            _direction = true;
            _index = 1;
            addEventListener(Event.ENTER_FRAME, onColorUpdate, false, 0, true);
        }
        
        private function onColorUpdate(e:Event):void 
        {
            var value:Number = (_direction)?STEP: -STEP;
            _colors[_index] += value;
            if (_colors[_index] >= MAX_LIMIT) {
                _colors[_index] = MAX_LIMIT;
                _direction = !_direction;
                _index--;
            }else if (_colors[_index] <= MIN_LIMIT) {
                _colors[_index] = MIN_LIMIT;
                _direction = !_direction;
                _index += 2;
            }
            if (_index >= _colors.length) {
                _index -= _colors.length;
            }
            if (_index < 0) {
                _index += _colors.length;
            }
            trace(_colors);
        }
        
    }
 
}
Ну а что со значениями цветов делать, надеюсь разберетесь
1
0 / 0 / 0
Регистрация: 10.11.2012
Сообщений: 10
10.11.2012, 23:29  [ТС]
Спасибо, теперь, надеюсь, разберусь
0
0 / 0 / 0
Регистрация: 10.11.2012
Сообщений: 10
11.11.2012, 23:44  [ТС]
TanaTiX, не получается разобраться, как только я пытаюсь вывести значения _colors, за пределы функции onColorUpdate, они тут же становятся или NULL или NAN....
0
Модератор
 Аватар для TanaTiX
2936 / 1795 / 180
Регистрация: 19.02.2011
Сообщений: 6,552
12.11.2012, 00:08
Fluke1978, значение _colors и так за пределами функции onColorUpdate. Как вы этим пользуетесь?
0
0 / 0 / 0
Регистрация: 10.11.2012
Сообщений: 10
12.11.2012, 00:15  [ТС]
TanaTiX, повторюсь, я новичок в AS, код в том виде как Вы его написали, прекрасно работает, но как только я пытаюсь присвоить значения из массива _colors созданным переменным, для дальнейшего использования в colorTransform, они принимают вышеописанные значения
0
Модератор
 Аватар для TanaTiX
2936 / 1795 / 180
Регистрация: 19.02.2011
Сообщений: 6,552
12.11.2012, 00:22
Fluke1978, повторюсь, я не телепат. Как у вас это происходит?
0
0 / 0 / 0
Регистрация: 10.11.2012
Сообщений: 10
12.11.2012, 00:30  [ТС]
TanaTiX, на сцене mc в котором нарисована некая фигура, я прописываю код в 1 кадре, в котором вызываю new Test(), далее, как я пытаюсь сделать, должно происходить следующее: я создаю переменные типа Number и им присваиваю значения из _colors, далее эти переменные подставляются в colorTransform(r, g,b,) моего mc и фигура постоянно меняет свой цвет, но не получается
0
Модератор
 Аватар для TanaTiX
2936 / 1795 / 180
Регистрация: 19.02.2011
Сообщений: 6,552
12.11.2012, 00:43
Я показал пример, который, как предполагалось, вы измените согласно своим нуждам. Я не расчитывал, что вы будете его использовать как есть.
Покажите кодом.
0
0 / 0 / 0
Регистрация: 10.11.2012
Сообщений: 10
12.11.2012, 00:52  [ТС]
В Вашем примере изменил _colors на Public,
код на шкале времени:
ActionScript 3
1
2
3
4
5
6
7
8
9
10
11
import flash.geom.ColorTransform;
 
new Test();
var t:Object = new Test;
var r:Number;
var g:Number;
var b:Number ;
r = t._colors[0];
g = t._colors[1];
b = t._colors[2];
pix.transform.colorTransform = new ColorTransform(r, g, b,)
pix - это MovieClip на сцене
0
Модератор
 Аватар для TanaTiX
2936 / 1795 / 180
Регистрация: 19.02.2011
Сообщений: 6,552
12.11.2012, 01:06
Fluke1978, во-первых, если уж и создавать объект, на основании моего класса, то зачем менять ему тип на Object? Оставь Test или переименуй на свой вкус.
При создании объекта не забываем про скобки.
ActionScript 3
1
new Test();
В классе Test необходимо создать геттеры. Например:
ActionScript 3
1
2
3
public function get red():Number{
   return _colors[0];
}
И соответственно обращение к его свойству
ActionScript 3
1
trace(t.red);
У вас не получилось, т.к. объект _colors является приватным.
1
0 / 0 / 0
Регистрация: 10.11.2012
Сообщений: 10
12.11.2012, 01:26  [ТС]
Спасибо, буду дальше пробовать

Добавлено через 17 минут
TanaTiX, попробовал в качестве примера:
код на шкале времени:
ActionScript 3
1
2
3
4
new Test();
var r:Number;
r = Test.red;
trace(r);
написал геттер в Test
выдает такую ошибку:
Монтажный кадр 1, слой "Actions", кадр 1, строка 4 1119: Обращение возможного неопределенного свойства red через ссылку со статическим типом Class .
 Комментарий модератора 
Впредь форматируем текст сообщения: код выделяется специальными тегами. Для ActionScript это кнопка AS
0
Модератор
 Аватар для TanaTiX
2936 / 1795 / 180
Регистрация: 19.02.2011
Сообщений: 6,552
12.11.2012, 01:32
Fluke1978, у класса Test нет статических свойств и методов.
ActionScript 3
1
2
var t:Test = new Test();//не забываем сохранить ссылку на объект
trace(t.red);
Почитайте про отличия классов от их экземпляров.
1
0 / 0 / 0
Регистрация: 10.11.2012
Сообщений: 10
12.11.2012, 01:39  [ТС]
TanaTiX, Спасибо, теперь заработало!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
12.11.2012, 01:39
Помогаю со студенческими работами здесь

Оператор GOTO
Дано 50 вещественных чисел. Определить наибольшую величину из них. С помощью оператора GOTO

Оператор goto
Здравствуйте. Я в лабораторной работе проверяю введенные данные на различные ошибки. Я это все сделал, каждую ошибку мне выдает. То...

оператор GoTo
Ввести с клавиатуры произвольное целое число X в диапазоне от 80 до 500. Если введенное число X не соответствует указанному диапазону, с...

Оператор Goto и ветвление
Помогите, пожалуйста, написать программу, которая сперва считывает введенное с клавиатуры число, а потом, если введено одно значение...

Убрать оператор goto
Подскажите, пожалуйста, как переписать данный код без использования оператора goto: for i:=0 to N-1 do begin if spis=elvalue then...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
19
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru