Форум 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)
-   -   работа с Boolean (http://www.flasher.ru/forum/showthread.php?t=113061)

Musatoff 17.06.2008 18:10

работа с Boolean
 
Привет, братцы! :)
Такой Q: Как поставить слушателя или както по другому реализовать прослушку Boolean, то есть если оно равно True, то делаем то, а если False то другое. Знаю как можно сделать через интервал, но грузит.
Код:

var MyHideBool:Boolean = new Boolean
if (MyHideBool= true) {
playback.HideBtn.onRelease = function(){
                this.gotoAndStop(2)
                MyHideBool= false
}
if (MyHideBool= false) {
playback.HideBtn.onRelease = function(){
                this.gotoAndStop(3)
                MyHideBool= true
}

Здесь срабатывает только первое, то есть не ставиться false на мою Boolean.
P.S. сколько не смотрел хелпов, не врубаюсь как юзать EventListener и Listener и чем они отличаются, если у кого есть статейка например, если не трудно скиньте или направьте меня куда нить.

fljot 17.06.2008 18:24

во-первых, приведённый код даже невалиден

по проблеме:
я бы сделал сеттер для булевой переменной. и диспатчил бы событие
про события http://racer242.blogspot.com/2008/02...tcher-as2.html
про сеттеры http://flash-ripper.com/archives/000308.php

iNils 17.06.2008 18:26

1. Булево значение, лучше задавть так
Код:

var myHideBool:Boolean = false;
а new Boolean создает объект
Код:

var myHideBool:Boolean = new Boolean ();
trace (typeof myHideBool); //object

2. Во флеше принято с большой буквы писать только названия классов и интерфейсов, а свойства и метода с маленькой
3. Для надо использовать оператор "==", а не "=", которые является присваиванием
4. Зачем в данном коде вообще нужен слушатель? Вам нужен метод watch
Код:

var myHideBool:Boolean = false;
this.watch ("myHideBool", test);
function test (prop, oldVal, newVal) {
        trace (prop + " change from '" + oldVal + "' on '" + newVal + "'");
}
myHideBool = true;

5. Вообще, ваш код выглядит весьма странно, если я правильно понял смысл затеи, то должно быть так:
Код:

var myHideBool:Boolean = false;
playback.HideBtn.onRelease = function () {
        if (myHideBool) {
                this.gotoAndStop (2);
        } else {
                this.gotoAndStop (3);
        }
        myHideBool = !myHideBool;
};


Musatoff 17.06.2008 18:38

2iNils, Спасибо, друг! Простите за такой код, я только учусь!
1.Я не понимаю немного про watch, то есть он как бы постоянно наблюдает за какой-то функцией?? я почитал в хелпе, исходя из него мы смотрим не меняется ли myHideBool, а причем тут test function?
2. Про myHideBool = !myHideBool не уловил, сорри если надоедаю, но очень интересно в чем фишка и как пишут код профессионалы.
P.S. Я представляю если дать мой код одной программки профу, что он с ним сделает, у меня там 1500 строк =)

iNils 17.06.2008 18:46

1. watch наблюдает за свойством объекта, а функция test выполняет какие то действия при изменении свойства, иначе заме наблюдать?:)
2. По сколько булева переменная может примимать только два значения, то строка myHideBool = !myHideBool инвертирует текущее значение и переприсваивает его.

Musatoff 18.06.2008 11:08

Thank you, dude! Слушь а не подскажешь как сделать например так, по щелчку мыши было одно действие а по второму щелчку другое. Я видел один раз в каком-то примере там были знаки "||"

iNils 18.06.2008 11:17

См. пример в посте номер 3, код в пункте 5.

Musatoff 18.06.2008 11:22

Я не это имел ввиду. =) Без if и else, там по-моему еще было click. Я весь хелп перерыл, и безуспешно.

iNils 18.06.2008 11:26

Можно найти 100 и 1 способ без if и else и потратить на это годы, только вот вопрос - зачем, когда все делается с банальным if и else? Они собственно для этого и предназначены.

Musatoff 18.06.2008 12:11

блин. просто тот способ который я видел был вообще простой, типа четный клик на кнопку делаем это, нечетный то. Ну ладно все равно спасибко!

silin 18.06.2008 12:27

ты сам усложнил задачу, спросив про прослущку
а выходит, что нужно-то только менять значение флага в том же обработчике:
Код:

playback.HideBtn.onRelease = function(){
        myHideBool = !myHideBool;
        this.gotoAndPlay(myHideBool ? 2:3);
}



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

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