Форум 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)
-   -   3 способа написания кода для кнопки! (http://www.flasher.ru/forum/showthread.php?t=119431)

Evgeny_Flash_8 20.12.2008 13:29

3 способа написания кода для кнопки!
 
Здравствуйте!

У меня проблемы с кнопками.
1) Когда указываешь в самой кнопке код:

Код:

on (press) {
    nextFrame ();
}

on (press) {
    prevFrame ();
}

Проблем нет, код работает.

2) А когда вставляешь такой код:

Код:

next_btn.onPress = function () {
    nextFrame ();
}

prev_btn.onPress = function () {
    prevFrame ();
}

Не работает. Думал проблема в имени, но и с другими именами проблема, не знаю что делать..

3) А это тоже не работает!

Код:

//строгая типизация переменной
var i:Number = 1;                                // первый кадр
var j:Number = 6;                                // максимальное кол-во кадров

//определяем функцию goNextFrame()
function goNextFrame() {
        if (i<j) {
                nextFrame();
                i = i + 1;
        }
}

//определяем функцию goPrevFrame()
function goPrevFrame() {
        if (i>1) {
        prevFrame();
        i = i - 1;
        }
}

//назначаем ссылку на функцию обработчику событий кнопки onPress
next_btn.onPress = goNextFrame;

//назначаем ссылку на функцию обработчику событий кнопки onPress
prev_btn.onPress = goPrevFrame;

Научите работать с кнопками! :( Есть 3 способа, а получается только один. Скажите где моя ошибка?

Wolsh 20.12.2008 14:10

Код надо писать в кадр, а не на кнопках, как в прошлом веке.
Последний скрипт прекрасно работает. Только непонятны махинации с i и j - есть свойство currentFrame, есть totalFrames, они здесь прекрасно заменяют школьный бейсик.

aksios 20.12.2008 14:22

Экстрасенс скажет Вам что Вы делаете не правильно. Зачем ваще атачить к сообщению пример?
Я не экстрасенс, но думаю, что не правильно скорей всего то, что Вы название кнопки в библиотеке символов принимаете за имя кнопки для скрипта. Поэтому не работают кнопки.

silin 20.12.2008 19:27

у кода "на кнопке"
Код AS1/AS2:

on (press) {
    prevFrame ();
}

this - это мувик, в котором находится кнопка (к слову: это не относится к коду на мувике, там this - сам мувик)

при определении метода кнопки
Код AS1/AS2:

next_btn.onPress = function () {
    nextFrame ();
}

this в нем будет указывать на самому кнопку
отсюда и непонятки : nextFrame вызывается для разных объектов

Evgeny_Flash_8 22.12.2008 18:19

silin.
Покажи, как двумя способами организовать это?

Имена и т.д. я знаю как писать к кнопкам :)
Жду ответа!

И еще вопрос не по теме! "Как закрыть свою тему?" Пожалуйста только громко не смеяться!!! :)

Wolsh 22.12.2008 18:35

Автор не может закрыть или удалить тему - закрывают модераторы, удаляют админы.
А громко смеяться - это над просьбой "показать как". Вам оба варианта кода дали, Вам исходник с кнопкой чтоли сделать??? Пошевелите пальцем.

Evgeny_Flash_8 22.12.2008 22:03

Цитата:

Сообщение от silin (Сообщение 785096)
у кода "на кнопке"
Код AS1/AS2:

on (press) {
    prevFrame ();
}

this - это мувик, в котором находится кнопка (к слову: это не относится к коду на мувике, там this - сам мувик)

при определении метода кнопки
Код AS1/AS2:

next_btn.onPress = function () {
    nextFrame ();
}

this в нем будет указывать на самому кнопку
отсюда и непонятки : nextFrame вызывается для разных объектов

Первый код работает, а второй нет (который написан выше!!!).

Цитата:

Сообщение от Wolsh (Сообщение 785538)
Вам оба варианта кода дали, Вам исходник с кнопкой чтоли сделать??? Пошевелите пальцем.

Исходник с кнопкой не надо!!! Смотри тему выше, первый код я умею делать!!! :)
А второй не получается...
Цитата:

Сообщение от silin (Сообщение 785096)
this в нем будет указывать на самому кнопку
отсюда и непонятки : nextFrame вызывается для разных объектов

как сделать, чтобы НЕПОНЯТОК не было?
Нужен КОД

Wolsh 22.12.2008 22:13

второй код ПИШЕМ В КАДРЕ назвав кнопку "next_btn" Смотри тему выше, сообщение №2.

aksios 22.12.2008 22:16

За гранью добра и зла.

Evgeny_Flash_8 22.12.2008 22:21

Цитата:

Сообщение от Wolsh (Сообщение 785582)
второй код ПИШЕМ В КАДРЕ назвав кнопку "next_btn" Смотри тему выше, сообщение №2.

Ха-ха-ха. Об этом я в курсе!!! :) А если у меня не пашет.
+ Я делаю все по книжке...
Может мне сюда свое выложить??? Что бы вы все голову поламали???

artem_fs 22.12.2008 22:26

может не там называем кнопку?

Wolsh 22.12.2008 22:27

О, Злой Гений :) aksios был прав))))))
Я думаю что Вы делаете это все под Macromedia Flash 4, или понаписали в своем проекте уже столько кода везде где можно и нельзя, что...)) Впрочем я не желаю Вас оскорбить ни в коем случае, все с этого начинали, и я тоже. Давайте свой чудо-юдо-исходник!

Evgeny_Flash_8 22.12.2008 22:31

Я чувствую тут уже флуд идет не по теме.
Я завтра наверное или на днях (если в этот теме ответа не найду) создам новую тему.

В ней будет 3 одинаковых работ, из которых 1 рабочая будет, а 2 нет.
Там будет использован код (первого поста этой теме).

И хватит тут меня держать за дурака, я ведь учусь еще только во флеше летать. И глупые вопросы с друзьями, такими же как я решаю. (Как лучше назвать кнопку и т.д. :) )
А в книжке вычитал про три метода, как можно организовать код к кнопке. Я до этого знал 1 и радовался им :) .
Но другие 2 метода у меня не ПАШУТ, я спросил почему? Мне ответили:
Цитата:

Сообщение от silin (Сообщение 785096)
при определении метода кнопки
Код AS1/AS2:

next_btn.onPress = function () {
    nextFrame ();
}

this в нем будет указывать на самому кнопку
отсюда и непонятки : nextFrame вызывается для разных объектов

Я спросил:
Цитата:

Сообщение от Evgeny_Flash_8 (Сообщение 785580)
как сделать, чтобы НЕПОНЯТОК не было?
Нужен КОД

И пошел ФЛУД не по теме, который я не люблю ...

artem_fs 22.12.2008 22:34

Вам код написали, и он был процитирован несколько раз уже. может исходник дадите?

silin 22.12.2008 22:43

Код AS1/AS2:

next_btn.onPress = function () {
    this._parent.nextFrame ();
}


Evgeny_Flash_8 22.12.2008 22:47

Вложений: 1
Я объяснять не буду. Там и так все ясно ...
Качайте и смотрите!!!

Wolsh 22.12.2008 22:49

Вложений: 1
Предлагаю сделать проще. Вот Вам рабочие исходники с двумя непонятными вариантами, изучайте.
зЫ. Когда silin говорил о непонятках, он имел в виду то, что у Вас возник вопрос, а не то, что Флэш не понимает кого переводить на следующий кадр. Это не какая-то неопределенность в программе или языке.
А флуд - это Ваши угрозы сломать нам головы. Бросьте :)

Evgeny_Flash_8 22.12.2008 22:50

Цитата:

Сообщение от silin (Сообщение 785595)
Код AS1/AS2:

next_btn.onPress = function () {
    this._parent.nextFrame ();
}


Интересно! Проверю сейчас работает или нет! :)

Неа :(

Wolsh 22.12.2008 22:57

Вы не назвали Ваши кнопки. Вот и вся беда.

Evgeny_Flash_8 22.12.2008 23:00

Вложений: 1
Цитата:

Сообщение от Wolsh (Сообщение 785599)
Предлагаю сделать проще. Вот Вам рабочие исходники с двумя непонятными вариантами, изучайте.
зЫ. Когда silin говорил о непонятках, он имел в виду то, что у Вас возник вопрос, а не то, что Флэш не понимает кого переводить на следующий кадр. Это не какая-то неопределенность в программе или языке.
А флуд - это Ваши угрозы сломать нам головы. Бросьте :)


Простите! Оказывается я забыл объявить ID в форме.
Все пост можно закрывать! :)
Мой архив не скачивайте!

Это правильный вариант

aksios 22.12.2008 23:00

Цитата:

Сообщение от Wolsh (Сообщение 785603)
Вы не назвали Ваши кнопки. Вот и вся беда.

Пост №3 :boredom:
Цитата:

Оказывается я забыл объявить ID в форме.
Я плакалъ. Учитывая что не ID не формы там нет.

Evgeny_Flash_8 22.12.2008 23:02

Всем большое спасибо! Счастливо оставаться ...

Добавлено через 6 минут
Цитата:

Сообщение от Evgeny_Flash_8 (Сообщение 785604)
Оказывается я забыл объявить ID в форме.

... забыл объявить для кнопки Instance Name (IN) ...

NoCD 22.12.2008 23:10

анимация находится на главной сцене, а вы с помощью кнопки хотите сделать перемещение на следующий кадр, то
Код AS1/AS2:

next_btn.onPress=function()
{_root.nextFrame()}

Если анимация находится непосредственно в мувике, то
Код AS1/AS2:

i=0 //номер кадра
next_btn.onPress=function()
{
 
this.gotoAndStop(i++) //или this.gotoAndPlay(i++)
        }


Wolsh 23.12.2008 00:33

Цитата:

this.gotoAndStop(i++)
И с какого нажатия это сработает? (про номер кадра=0 я промолчу). Пожалуйста, без обид, но прежде чем давать людям код, проверяйте его! Вы по крайней мере поймете, где может быть ошибка, а человек спросивший будет две ночи думать, почему у него не работает. Это простая этика)))

aksios 23.12.2008 00:52

Это вторая серия.

NoCD 23.12.2008 04:09

Цитата:

this.gotoAndStop(i++)

И с какого нажатия это сработает? (про номер кадра=0 я промолчу). Пожалуйста, без обид, но прежде чем давать людям код, проверяйте его! Вы по крайней мере поймете, где может быть ошибка, а человек спросивший будет две ночи думать, почему у него не работает. Это простая этика)))
Ах да, виноват, должно было получиться вот так, писал не глядя:

Код AS1/AS2:

i=1
next_btn.onPress=function()
{this.gotoAndStop(++i)}


dimarik 23.12.2008 16:07

Цитата:

Сообщение от NoCD (Сообщение 785658)
Ах да, виноват, должно было получиться вот так, писал не глядя:

Код AS1/AS2:

i=1
next_btn.onPress=function()
{this.gotoAndStop(++i)}


А как вам такой вариант?

Код AS1/AS2:

i = 0;
next_btn.onPress=function() {
        this.gotoAndStop( i = ++i % this._totalframes + 1 );
}ж



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

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