Форум 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)
-   -   компонент checkbox (http://www.flasher.ru/forum/showthread.php?t=90643)

poe 15.01.2007 23:42

компонент checkbox
 
Не знаю, как заставить работать компонент checkbox.
Мне нужно, чтоб в зависимости от того, включен или нет чекбокс при переходе на следующий кадр, сценарий мувиклипа, находящегося там останавливался бы в том или ином фрейме.
Экземпляр мувиклипа, соответственно, называется myFigure.

В первом фрейме на главной сцене ввенден такой код:

Код:

stop();
initValues();

r_circle.selected = false;

var checkboxListener:Object = new Object();
checkboxListener.click = function(evt_obj:Object) {
 if (evt_obj.target.selected) {
        _root.myFigure.gotoAndStop(1);
} else {
        _root.myFigure.gotoAndStop(5);
 }
};
r_circle.addEventListener("click", checkboxListener);

[iNils: Для оформления своего кода, надо использовать теги [code][/code]]

Работать отказывается. Что-то тут неверно с синтаксисом или в принципе не правильно. Подскажите, пожалуйста или дайте ссылку на исходник образца. (откровенно говоря, все перерыл, не нашел ни одного, где работали бы checkbox'ы).

Gosha_master 16.01.2007 01:07

Ой, а зачем все так сложно?

Код:

on (click) {
 if (this.selected) _root.myFigure.gotoAndStop(1);
 else _root.myFigure.gotoAndStop(5);
};

Вешаешь на свой checkbox, так по идее тож оч даже не плохо работает...
и вообще checkbox не люблю, т.к. использует много встроенных классов, в следствии чего много весит! Как впрочем все встроенные компоненты.

Лучше написать такую байду самому, если не лень.
Умещается в 2 строчки, итог - тотже!

Ну а если так охота как написал, то:

Код:

stop();
initValues();

r_circle.selected = false;

var checkboxListener:Object = new Object();
checkboxListener.click = function() {
 if (_root.r_circle.selected) _root.myFigure.gotoAndStop(1);
 else _root.myFigure.gotoAndStop(5);
};

r_circle.addEventListener("click", checkboxListener);

Работает точно! Не запашет, напиши, пришлю файл, где все в норме...
Проблемная строчка
Код:

if (evt_obj.target.selected)
Точнее она запускается только один раз, а дальше функция не видит твой checkbox, потому и надо его явно указать.

Да и еще: если хочешь вторым способом, надо чтобы твой скрипт сущевтвовал на протяжении всей линейки!!! (5 или скока у тебя там кадров)

[iNils: Для оформления своего кода, надо использовать теги [code][/code]]

poe 16.01.2007 19:47

спасибо, кое-что заработало!

правда первый вариант однозначно не пашет...
что касается второго, то я хочу, чтоб у меня было несколько чекбоксов:
соответственно код несколько подправил:
Код:

stop();
initValues();

r_circle.selected = false;

var checkboxListener:Object = new Object();
checkboxListener.click = function() {
 if (_root.r_circle.selected)
 { _root.myFigure.gotoAndStop(1);
  _root.combo_var.gotoAndStop(1);
 }
 
};

r_circle.addEventListener("click", checkboxListener);

//

r_square.selected = false;

var checkboxListener:Object = new Object();
checkboxListener.click = function() {
 if (_root.r_square.selected)
  { _root.myFigure.gotoAndStop(2);
    _root.combo_var.gotoAndStop(2); 
  }
 
};

r_square.addEventListener("click", checkboxListener);

//

r_rectangle.selected = false;

var checkboxListener:Object = new Object();
checkboxListener.click = function() {
 if (_root.r_rectangle.selected)
  { _root.myFigure.gotoAndStop(3);
    _root.combo_var.gotoAndStop(3);
  }
 
};

r_rectangle.addEventListener("click", checkboxListener);

Однако тут вопрос - как сделать, чтоб myFigure останавливался в своем пятом фрейме, если никакой чекбокс не выбран.
Я не умею перечислять сразу несколько условий: как-то так? -
Код:

if (r_circle.selected && r_square_selected && r_rectangle.selected)
_root.myFigure.gotoAndStop(5);

но не работает...
а если добавлять else для каждой из трех конструкции с if , тоже не получится.

iNils 16.01.2007 21:34

2 poe: Это уже наглость, два раза писал в этом топике об необходимости использование тегов [code][/code], и вам в том числе лично, а вы продолжаете игнорировать. Вам замечание.

Gosha_master 16.01.2007 21:59

Все сравнительно проще:

Код:

r_circle.selected = r_square.selected = r_rectangle.selected = false;

var checkboxListener:Object = new Object();

checkboxListener.click = function(box) {
        var frame_go:Number;
        var type:String = box.target._name;
       
        switch (type) {
                case 'r_circle': frame_go = 1; break;
                case 'r_square': frame_go = 2; break;
                case 'r_rectangle': frame_go = 3; break;
        }
        if (box.target.selected) {       
                _root.myFigure.gotoAndStop(frame_go);
                _root.combo_var.gotoAndStop(frame_go);
        }
};

r_circle.addEventListener("click", checkboxListener);
r_square.addEventListener("click", checkboxListener);
r_rectangle.addEventListener("click", checkboxListener);

if (r_circle.selected, r_square.selected, r_rectangle.selected == false) {
        _root.myFigure.gotoAndStop(5);
        _root.combo_var.gotoAndStop(5);
}

Это вместо всего твоего кода....

poe 16.01.2007 22:06

2 iNils -
sorry, не заметил.

Код:

break;
2 Gosha_master -
спасибо, попробую, помедитирую...


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

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