Форум 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)
-   -   Проверка свойства _visible (http://www.flasher.ru/forum/showthread.php?t=103512)

RealShat 06.11.2007 20:37

Проверка свойства _visible
 
Проблема состоит вот в чём:
надо проверить свойство _visible пяти объектов и если везде оно true то выполнить какието действия.
Как бы это реализовать?
Пытался сделать так:
Код:

function obhod() {
        if (p1._visible=true) { //это те объекты что надо проверить
                if (p2._visible=true) {
                        if(p3._visible=true) {
                                if(p4._visible=true) {
                                        if(p5._visible=true) {
                                                tablo1._x=123;//А это действия
                                                tablo1._y=225;//которые надо                                                                                       
                                                //выполнить                 
                                        }
                                }
                        }
                }
        }
}

Что подскажете?

Fernando Costa 06.11.2007 20:51

Код:

function obhod() {
  for(var i =1;i<=5;i++){
  if(_root['p'+i]._visible == false)
  return;
  }
  tablo1._x=123;
  tablo1._y=225;
}


Mnilionic 06.11.2007 20:55

Код:

// массив с сылками на клипы
var mcs = [p1,p2,p3,p4,p5];
function obhod(){
        var n = 0;
        for(var i=0; i <= mcs.length; i++){
                n+= (mcs[i]._visible )? 1: 0;
        }
        if(n == mcs.length) trace("all are visible");
        else trace (n +" from " + mcs.length + " are visible")
}
obhod()


etc 06.11.2007 20:59

Код:

function walk():Void {
    var num:Number = 6;
   
    while (--num) {
      var mc:MovieClip = this['p'+num];
      if (!mc._visible) return;
    }
   
    tablo1._x = 123;
    tablo1._y = 225;
}


udaaff 06.11.2007 21:03

еще вариант:
Код:

function obhod()
{
        if (p1._visible && p2._visible && p3._visible && p4._visible && p5._visible) {
                //
        }
}

Если объектов немного

RealShat 06.11.2007 21:23

Всем огромное СПС!!!
Приму во внимания все способы.

udaaff, я так пробовал, но не работало.

extruder2 06.11.2007 23:32

Да и самый первый код, мне кажется, правильный. Некрасивый, но правильный. Правда, в нем есть ошибка. Пишется не "p1._visible=true", а "p1._visible==true". Это же не присвоение, а сравнение. ;)

RealShat 07.11.2007 19:38

extruder2, спасибо, что сказал. :) Хоть буду знать :D

Fernando Costa 07.11.2007 20:15

Цитата:

Сообщение от extruder2
Да и самый первый код, мне кажется, правильный. Некрасивый, но правильный. Правда, в нем есть ошибка. Пишется не "p1._visible=true", а "p1._visible==true". Это же не присвоение, а сравнение. ;)

а что есть красивые и неправильные?

зы: самый типизированный у __etc, как всегда

RealShat 14.11.2007 19:25

Привет всем!
У меня снова проблема, которая касается выше указанного кода:
При загружении клипа с этим кодом, код опять не работает.
Как быть?

Chas 14.11.2007 20:18

что значит "при загружении клипа"?
при подгрузке мувиков из внешних файлов?
тогда тебе надо его исполнять после того, как они будут загружены. как определить загружены или нет? см. хелп по MovieClipLoader.

RealShat 22.11.2007 21:27

Нет, проблема так не решилась.
Код работает, но не корректно.
Не так как работает загружаемый мувик сам по себе.
Есть еще варианты?

Мыкыта 23.11.2007 14:02

слушателя добавить

RealShat 23.11.2007 21:11

Мыкыта, можно поподробней?

etc 23.11.2007 22:42

Поподробней читайте про событийную модель в хелпе.

RealShat 27.11.2007 20:50

Можно, пожалуйста, ответ на именно данную ситуацию.
Просто я начинающий флешэр и мне бы лучше конкретные ответы.

Просто скажите куда? зачем? лисенер.

etc 29.11.2007 22:31

За это время вы ещё до сих не прочитали про событийную модель?
Очень жаль.

RealShat 30.11.2007 21:11

Отлично!!
Буду перечитывать!

RealShat 06.12.2007 21:48

Перечитал, появился один мальнький вопросик:
какое событие соответствует тому, что свф загружен?

Fernando Costa 06.12.2007 22:05

onLoadComplete :)

wvxvw 06.12.2007 22:13

Код:

mc1._visible+mc2._visible+mc3._visible+mc4._visible?[false condition]:[true condition];
если хоть один клип видно - выполнится "false condition", если всех не видно - "true condition".

RealShat 06.12.2007 22:22

FernandoCosta, я вообще запутался!!!
Зачем этот лисенер? Чем плох код
Цитата:

next.onPress = function() {
var loader:MovieClipLoader = new MovieClipLoader();
loader.loadClip("part2.swf", clip);
};
???

wvxvw, false condition функция?

УРААААА!!!!!
Всем спасибо!!!
Проблема решилась дико просто:
изначально я взял код FernandoCosta'ы и с ним после загрузки не работало.
Сейча срешил по эксперементировать и поставил код _etc.
И он заработал!
Типизирование спасает мир!
А сегодня меня!
Еще раз спасибо, больше не буду вас доставать глупыми вопросами.
Учусь на своих ошибках!!!

etc 07.12.2007 09:40

Цитата:

Сообщение от RealShat
Типизирование спасает мир!

Только не в AS2, а типизация в моем коде лишь для галочки, может этот кусок в класс будет вставлен.

wvxvw 07.12.2007 13:16

Цитата:

wvxvw, false condition функция?
нет, место, где писать код, если условие не соблюдается.
Сорь, я не видел, что есть вторая страница. Просто самый быстрый способ (с точки зрения записи, как оно в смысле производительности - не знаю) выяснить соответвствие множественных условий - сложить их все (булевое "тру"=1, булевое "фолс"=0) и проверить результат.
Т.е. "тру"+"тру"+"тру"=3, "фолс"+"тру"+"тру"=2, например.
если нужно именно последовательно проверить - вот вариант:
Код:

var _arr:Array = [true, true, false, true];
var _arr1:Array = [true, true, true, true];
var _arr2:Array = [true, false, false, true];
var _arr3:Array = [false, false, false, false];
function calculate(_a:Array):Number {
        var i:Number = 0;
        var r_num:Number = 1;
        var base:Number = 1;
        while(i<_a.length){
                r_num+=(base<<_a[i]);
                base *=2;
                i++;
        }
        return r_num ^ base;
}
//
trace(calculate(_arr).toString(2)); //1011
trace(calculate(_arr1).toString(2)); //1111
trace(calculate(_arr2).toString(2)); //1001
trace(calculate(_arr3).toString(2)); //0

Т.е. в зависимости от последовательности тру-фолс получим разное значение (всегда уникальное), ну а потом уже проверять как нравится - иф\свитч...


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

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