Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   Чтобы переменная не обнулялась (http://www.flasher.ru/forum/showthread.php?t=122289)

Raddjuret 06.03.2009 20:49

Чтобы переменная не обнулялась
 
Ситуация такая:
Делаю попытки создать что-то вроде примитивного квеста.
Основная задача - чтобы получилось сделать инвентарь.

Сам ролик можно видеть тут: http://skydin.narod.ru/round.swf

В сцене 2 кадра и следующие активные объекты:

round - кружок на который можно нажать и тогда он исчезает ("подбирается" игроком).
pram - прямоугольник который является объектом, появляющимся в "инвентаре" после того как я "подбираю" round.
И кнопка которая ведёт на 2-й кадр в котором только кнопка, которая ведёт обратно на первый и невидимая копия объекта pram

Теперь мой код:
Код AS1/AS2:

count=0;\\счётчик который проверяет - "забран" ли объект в инвентарь
 
pram._visible = false;
 
round.onPress = function(){
count++;
if(count >=1)
{
        round._visible = false;
        pram._visible = true;
}
}
 
stop();

Всё работает пока я на 2-м кадре не жму кнопку возвращения на 1-й.
Когда это происходит, переменная count обнуляется предмет пропадает из "инвентаря" и появляется обратно на локации1

1) Как сделать так, чтобы она оставалась в памяти?
2) Как сделать так, чтобы она сохранялась в случае если первая локация будет располагаться в сцене 1, а вторая локация - в сцене 2.

Постскриптум.

Я не знаю что со мной делать будете (в принципе можете что угодно).

Но в action script я влез по большой нужде (изучаю его наверное 3-4 дня) - делаю на нём (как на чём-то хоть как-то понятном моей голове) свою дипломную работу.
Большие и запутанные куски кода воспринимаю плохо. Я очень надеюсь что решение проблемы с обнулением переменных простое донельзя.

gmaneye 06.03.2009 21:54

С такой же проблемой столкулись вы что и я. Короче говоря при переходе на прошлый кадр там всё строится заново и выполняется AS заново.
Тут конечно могу такое посоветовать:
В первом кадре пишите (только не там где уже инвентарь)
Код AS1/AS2:

var ball:Boolean = false;

В след. кадре пишите уже свой код но с такими исправлениями:
Код AS1/AS2:

if (ball) {
          round._visible = false;
        pram._visible = true;
}else{
          round._visible = true;
        pram._visible = false;
}
 
round.onPress = function(){
//count++;
//if(count >=1)
//{
        round._visible = false;
        pram._visible = true;
          ball = true;
//}
}
 
stop();


Котяра 06.03.2009 23:26

не пишите в кадрах. пишите в классах.

Raddjuret 06.03.2009 23:54

Класс! Работает.
И мало того что в соседних кадрах - так ещё и в соседних сценах.
Большое спасибо! Вы меня очень выручили!

Как я понял, Тип переменной boolean это как рычажок на 2 положения (true/false). Верно?
Кроме того - именно для этого типа переменной в flash предусмотрено сохранение значения.

Добавлено через 1 минуту
Котяра
А где можно посмотреть толковое и простое руководство по классам?

Котяра 07.03.2009 00:25

поищите книжку Колин Мук Основы ActionScript

Raddjuret 07.03.2009 01:04

Наверное здесь же. Чтобы не плодить темы.

1) Для каждой локации я создал по сцене. И того сцены loc1 и loc2.
2) Создал отдельную сцену и назвал её inventory. Там отображается содержимое "Рюкзака" героя. Крупным планом.
3) В сценах loc1 и loc2 я поместил по гиперссылке, которые делают gotoAndStop на первый кадр сцены inventory.

Теперь проблема. Что мне прописать в кнопке, которая ведёт из inventory назад - чтобы если я попал в inventory из сцены loc2 - то я и возвращаюсь в сцену loc2, а если я вышел на неё из сцены loc1 - то я и возвращаюсь в сцену loc1?

gmaneye 07.03.2009 01:27

ну как бэ не очень понятен вопрос но может быть я попаду в точку:
gotoAndStop("сцена",кадр)
gotoAndPlay("сцена",кадр);

Raddjuret 07.03.2009 01:57

gmaneye
В том то и дело что эти операторы я знаю. А вопрос переформулирую (попробую)

Из сцены 1 можно попасть в сцену 4
Из сцены 2 можно попасть в сцену 4
Из сцены 3 можно попасть в сцену 4

как настроить одну кнопку в сцене 4 - чтобы она возвращала меня именно в ту сцену, через которую я попал в сцену 4?

То есть: если поставить просто gotoAndStop и назначу ей "вернуться в сцену 1" то получится как-то так:

Я стартую в сцене 1 - из неё попадаю в сцену 4. Я хочу вернуться - и из сцены 4 обратно попадаю в сцену 1. Отлично.
НО.
Если я из сцены 1 сначала иду в сцену 3 - и из неё попадаю в сцену 4. А потом хочу вернуться, то я нажимаю кнопку - и... однократно написанный стабильный сценарий кнопки переносит меня не в сцену 3, а в сцену 1.

Котяра 07.03.2009 02:13

забудьте о сценах и кадрах. кадры только для анимации.
в главной сцене делаешь клип . называешь его main.
линкуешь его к классу Main (файл Main.as)
в этом классе описываешь поведение кнопки ..
Ладно, читайте Мука (пусть простят меня за частое использование Его имени, но для начального обучения - он лучше всех.. проверял на кошках)

gmaneye 07.03.2009 02:39

согласен с Котяра, тоже хочу изучать эту книжку, чтобы всё знать
Кстати вот и он (МУК)
MUK


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

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