Форум 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=207693)

Графиня 30.04.2014 22:55

Делаю тест. Помогите понять, в чем ошибка
 
Здравствуйте. Делаю простенький тест, пожалуйста, подскажите, в чем у меня ошибка.

Код AS1/AS2:

stop();
 
var b1 = x1;
var b2 = x2;
var b3 = x3;
 
var count:Number = 0;
 
count = 0
 
b1.onPress (count += 1);
 
b2.onPress (count += 2);
 
b3.onPress = (count += 3);
 
count == x1+x2+x3;
 
calc.onPress = function(){       
        if (count == 1){
    gotoAndStop(2);}
        if (count == 2){
    gotoAndStop(3);}
        else {
    gotoAndStop(4);}
                }


samana 30.04.2014 23:52

Вы ведь для calc написали правильно, а для других объектов почему-то нет.
Код AS1/AS2:

b1.onPress = function()
{
        count += 1
};
 
b2.onPress=function()
{
        count += 2
};
 
b3.onPress = function()
{
        count += 3
};

И у вас не видно определение переменных "x1, x2, x3".

Графиня 01.05.2014 20:25

Я изменила написание функции и добавила вот это:

Код AS1/AS2:

var x1;
var x2;
var x3;

все равно не работает. Подскажите, пожалуйста, как сделать правильно?

samana 01.05.2014 21:31

Тут не понятна ваша задача, для чего вы делаете это?
Код AS1/AS2:

var b1 = x1;
var b2 = x2;
var b3 = x3;

Ведь b1,b2,b3 это мувики или кнопки, которые вы подписываете на onPress.
Чтобы вам помочь, попробуйте описать ту задачу, которую вы хотите выполнить. Может даже и исходник пригодится.

Графиня 01.05.2014 23:52

Вложений: 1
Суть флешки состоит в том, что пользователь будет нажимать на круглые кнопочки, при том, на каждую из кнопок можно нажать несколько раз (и пока он нажимает, суммируется результат), и каждой кнопке присуще свое количество баллов, и только после этого, когда нажимается кнопка "Рассчитать", суммируется общее количество баллов.

Исходник прилагаю.

Я просто не поняла, что значит "определение переменных "x1, x2, x3", извините.

dark256 02.05.2014 00:40

Просто проведите эксперимент:

Код AS1/AS2:

var A
trace (A)
A=A+1
trace (A)
 
var B=0
trace(B)
B=B+1
trace(B)

Почувствуйте разницу :)

samana 02.05.2014 19:46

Суммированный результат у вас хранится в переменной count. Я так и не смог понять, какую функциональность должны были нести переменные "x1, x2, x3"... простите.
По идее вам нужно оставить только эти строки
Код AS1/AS2:

var count:Number = 0;
 
b1.onPress = function()
{
        count += 1;
        trace(count);
};
 
b2.onPress = function()
{
        count += 2;
        trace(count);
};
 
b3.onPress = function()
{
        count += 3;
        trace(count);
};
 
calc.onPress = function()
{
        if (count == 1)
        {
                gotoAndStop(2);
        }
        if (count == 2)
        {
                gotoAndStop(3);
        }
        else
        {
                gotoAndStop(4);
        }
};


Графиня 03.05.2014 01:21

Да, вы правы, x не надо было вводить, я не додумалась сразу добавить к кнопке "count".
Но я почему-то вставила этот код. Если нажимаю цифру 2 или 3, работает. А если нажимаю 1, то, по идее, надо попадать на кадр с цифрой 1, а переход неверный... :(

samana 03.05.2014 01:39

У вас чёткое условие
Код AS1/AS2:

if (count == 1)
        {
                gotoAndStop(2);
        }

Вы сами написали, что при единице надо переходить на второй кадр)

Графиня 03.05.2014 02:11

Да! А на втором кадре у меня картинкой стоит цифра "1". А переходит почему-то на 4 кадр.
Я имела в виду свой исходник.

samana 03.05.2014 03:06

Причина в ваших условиях. Я попробую объяснить как оно срабатывает. Допустим count равен единице, но почему же переходит в третий кадр?

Код AS1/AS2:

if (count == 1)                //первая проверка. Да, count равен единице и команда перехода
{                                  //на второй кадр выполнится, но только после того, как весь код из данного кадра
        gotoAndStop(2);    //будет прочтён до конца.
}
                                    //чтение кода продолжается....
 
if (count == 2)                //вторая проверка не срабатывает, так как count не равен двойке в данный момент,
{
        gotoAndStop(3);
}
else                                // НО сработает эта строчка, ведь если count не равен двойке, тогда вы переходите 
{                                    // на четвёртый кадр, всё логично.
        gotoAndStop(4);
}

Просто не забывайте, что код обязательно прочитается весь, даже если была команда перехода на другой кадр.
Исправить ситуацию достаточно просто, поставьте цельную ветвь ифов. Здесь, переход на четвёртый кадр произойдёт только тогда, когда count будет равен любому числу, кроме единицы или двойки.

Код AS1/AS2:

if (count == 1)
{
        gotoAndStop(2);
}
else if (count == 2)    // <---  else if
{
        gotoAndStop(3);
}
else
{
        gotoAndStop(4);
}


Графиня 03.05.2014 03:16

Огромнейшее спасибо за объяснение! Мне очень важно было именно понять для себя, почему это так происходит. Удачи вам!!!!!!!!!!!

samana 03.05.2014 04:03

Спасибо и вам удачи!


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

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