PDA

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


RealShat
06.11.2007, 20:37
Проблема состоит вот в чём:
надо проверить свойство _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
Да и самый первый код, мне кажется, правильный. Некрасивый, но правильный. Правда, в нем есть ошибка. Пишется не "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
Типизирование спасает мир!
Только не в 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
Т.е. в зависимости от последовательности тру-фолс получим разное значение (всегда уникальное), ну а потом уже проверять как нравится - иф\свитч...