PDA

Просмотр полной версии : Чтобы переменная не обнулялась


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

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

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

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

Теперь мой код:
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 заново.
Тут конечно могу такое посоветовать:
В первом кадре пишите (только не там где уже инвентарь)

var ball:Boolean = false;

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

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 (http://slil.ru/27029750)

Raddjuret
07.03.2009, 03:24
gmaneye
Спасибо за ссылку! Почитаю на досуге... да. А пока видимо придётся сценами и кадрами увы. Времени до сдачи диплома осталось не так много.. эх.
Ещё и дофига всего надо успеть нарисовать в 3D...

Котяра
Спасибо за наводку!! Раз так активно рекомендуете - значит действительно что-то очень стоящее