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

mnjam 11.12.2013 20:16

Изменение переменной при нажатой кнопке
 
Помогите чайнику. Сделал уже сам чтобы при нажатии на кнопку значение переменной изменялась на +1.
Не могу сделать tak, чтобы переменная изменялась на +1 при нажатой кнопке до тех пор пока кнопку не отпустишь.

Куда что прописывать? Флаш МХ. Если неправильный раздел - перенесите.

samana 12.12.2013 01:47

Да, вы ошиблись разделом. Вам надо в actionscript 2.0
При нажатии на кнопку, добавляйте enterFrame, где и изменяйте значение переменной. А при release, удаляйте enterFrame.

mnjam 12.12.2013 02:31

Вложений: 1
Спасибо за быстрый ответ. А нельзя поподробней, где enterFrame вставлять? Кстати в МХ не могу найти этот приказ, может такое быть что в МХ его нет? (см. картинку, на ней и кнопкин скрипт, который только пошагово работает)

samana 12.12.2013 14:37

Во-первых вам не нужно писать код на кнопке. Сначала выделите кнопку на сцене и найдите внизу панель - properties (свойства). Там где-то должно быть пустое поле, куда нужно прописать имя для вашей кнопки. Допустим это имя будет - myButton.
Затем не выделяя кнопку на сцене, пропишите указанный ниже код, в кадр сцены (в ту вертикаль кадров, где находится ваша кнопка). Можете даже создать отдельный слой, специально для скриптов.


Код AS1/AS2:

var myVar:Number=0;
 
myButton.onPress=function()
{
        trace("press")
        onEnterFrame=enterFrameFunc;
}
 
myButton.onRelease=function()
{
        trace("release")
        delete onEnterFrame;
}
 
function enterFrameFunc()
{
        myVar++;
        trace(myVar);
}


mnjam 14.12.2013 18:03

Вложений: 1
Спасибо большое. Почти все получилось. Немного дополнил скрипт, получилось 2 кнопки для изменения переменной от 1 до 100 (см. swf).
Еше хотелось бы сделать так чтобы функция прерывалось когда курсор выходит за кнопку, а то сейчас если нажать мышкой на кнопку, а потом отпустить вне кнопки скрипт бежит дальше. Не подскажете что и куда для етого надо приписать?

button-var1.swf   (0.9 Кб)

samana 14.12.2013 18:43

Не знаю, как это делать на actionscript 2.0. В третей версии, можно просто словить момент выхода мыши с объекта с помощью (MouseEvent.ROLL_OUT), а в вашем случае, я бессилен помочь.

KumoKairo 14.12.2013 20:20

В вашем случае это будет функция .onDragOut

Код AS1/AS2:

myButton.onDragOut=function()
{
        trace("drag out")
        delete onEnterFrame;
}


mnjam 16.12.2013 00:39

Вложений: 1
Спасибо, это тоже получилось. Единственноe, может можно как-то лаконичнее написать чем вот так?

Код AS1/AS2:

myButton.onRelease=function()
{
        delete onEnterFrame;
}
myButton.onDragOut=function()
{
        delete onEnterFrame;
}




Теперь над следующей кнопкой голову ломаю(см. swf). Надо чтобы при нажатии кнопки в ней появлялся и изчезал белый кружок (в мувике он обозван "rs").
С исчезанием вроде порядок, но обратно не получается. Что не так в скрипте? Можно ли в этом случае оставить скрипт на кнопке или лучше тоже вынести во фрейм?

Код AS1/AS2:

function myfunction() {
    if (rs._alpha = 100) {
        rs._alpha = 0;
    } else {
        rs._alpha = 100;
    }
}

button-var1.swf   (1.4 Кб)

KumoKairo 16.12.2013 02:31

Ооо, старая ошибка невнимательных программистов!
знак = это операция присваивания. Проверка на равенство делается == так)
У вас в условии if (в самом условии) выставляется альфа в 100. Я даже не знаю, если честно, что там возвращается

mnjam 16.12.2013 03:26

Вложений: 1
Так оно и есть, сейчас все встало на место! До сих пор с ActionScript кроме как с простейшими приказами в нормальном модусе сталкиваться не приходилось, поэтому такие пробелы. Спасибо за подсказки!

button-var1.swf   (1.3 Кб)


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

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