PDA

Просмотр полной версии : Изменение переменной при нажатой кнопке


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
Спасибо за быстрый ответ. А нельзя поподробней, где enterFrame вставлять? Кстати в МХ не могу найти этот приказ, может такое быть что в МХ его нет? (см. картинку, на ней и кнопкин скрипт, который только пошагово работает)

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


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

button-var1.swf

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

KumoKairo
14.12.2013, 20:20
В вашем случае это будет функция .onDragOut (http://help.adobe.com/en_US/AS2LCR/Flash_10.0/help.html?content=00001327.html)

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

mnjam
16.12.2013, 00:39
Спасибо, это тоже получилось. Единственноe, может можно как-то лаконичнее написать чем вот так?

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




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

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

button-var1.swf

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

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

button-var1.swf

mnjam
20.12.2013, 22:42
Еще тут пара вопросов появилось надеюсь не очень сложных.
Хочу в начале фильма сделать так, чтобы какие-то кнопки и надписи сначала были невидны, а в последствии включались при нажатии на кнопку.
Как лучше это реализовать: добавлением фреймов или можно в одном фрейме скриптом как-то выключить? Если выключать во фрейме, можно ли просто положить выключаемые элементы на отдельный слой, и включать и выключать видимость этого слоя? Каким приказом это делается? Или видимость только у инстанций можно регулировать а у слоев нельзя?

samana
21.12.2013, 00:26
Манипулировать кодом слой - невозможно. Потому что на самом деле слоя никакого нет. Слои сделаны просто для удобства на этапе разработки.
Установите для всех нужных кнопок и надписей _visible=false, а когда надо их показать, то меняйте видимость на true.

mnjam
21.12.2013, 00:42
С переключением _visible вроде понятно. А куда прописать _visible = 0 для того чтобы при старте фильма элементы были первоначально невидимы?

samana
21.12.2013, 00:59
В самом начале вашего кода.

mnjam
21.12.2013, 18:13
Да, так все работает, спасибо. Засунул кнопки в директор для небольшого теста, вот что получилось (http://www.echtzeit3d.net/wip/lodtest.htm).

samana
21.12.2013, 18:49
Я не знаю, что по ссылке именно ваших рук дело, но заварничек классный.

dark256
21.12.2013, 22:44
Да, так все работает, спасибо. Засунул кнопки в директор для небольшого теста, вот что получилось (http://www.echtzeit3d.net/wip/lodtest.htm).

А какой ПЛАГИН ШокВэйва хочется установить для ссылки????

mnjam
22.12.2013, 01:27
Там флешь в директоре, поэтому кроме flash playera нужен еще adobe shockwaveplayer http://get.adobe.com/uk/shockwave/