Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Как узнать существует ли объект? (http://www.flasher.ru/forum/showthread.php?t=132235)

kaetano 07.11.2009 02:04

Как узнать существует ли объект?
 
Знаю что есть метод contains, но почему-то он не действует. Пишет ошибку
Код AS3:

ReferenceError: Error #1069: Не удалось найти свойство point1_1To3_0 в src.Main; отсутствует значение по умолчанию.

Имя объекта задается динамически. И ругается даже при трассировании:

Код AS3:

trace("POINT: " + this.contains( this["point" + indMan1 + "To" + indMan2]))

Добавлено через 1 минуту
Переменные indMan1,2 берутся из XML, если это важно

MrPoma 07.11.2009 02:20

Вы про дисплей обжекты говорите?

wvxvw 07.11.2009 02:22

contains() - это в смысле метод DisplayObjectContainer'a? Если point1_1To3_0 не DisplayObject или this не DisplayObjectContainer, то будет ошибка.
А зачем такие неуклюжие манипуляции с названиями переменных?
Чтобы проверить, существует ли объект, нужно знать, какой объект проверять, а в вашем случае похоже, вы не знаете, что именно хотите проверить...

etc 07.11.2009 02:25

Оно не нашло указанное свойство, contains тут непричем ещё.

kaetano 07.11.2009 02:33

Цитата:

Сообщение от wvxvw (Сообщение 863944)
contains() - это в смысле метод DisplayObjectContainer'a? Если point1_1To3_0 не DisplayObject или this не DisplayObjectContainer, то будет ошибка.
А зачем такие неуклюжие манипуляции с названиями переменных?
Чтобы проверить, существует ли объект, нужно знать, какой объект проверять, а в вашем случае похоже, вы не знаете, что именно хотите проверить...

Неа, я знаю объект, это MovieClip.

Неуклюжие названия.... ну я даже не знаю почему, наверно потому что объектов достаточное кол-во (point...), а имя (объект которыый нам нужен в определенный момент) формируется в зав-ти от выбранных установок, которые сидят в XML. Мда, объяснила.....:wacko:

wvxvw 07.11.2009 02:35

MovieClip - это класс, и существует он всегда, более того, он не может не существотать, т.как встроен в плеер.
Не понятно зачем вообще давать имена, если они все равно не нужны... почeму нельзя просто сложить объекты в какой-нибудь список, типа массива, например.

kaetano 07.11.2009 02:46

Цитата:

Сообщение от wvxvw (Сообщение 863948)
Не понятно зачем вообще давать имена, если они все равно не нужны... почeму нельзя просто сложить объекты в какой-нибудь список, типа массива, например.

Может и можно. Только смотрите. В определенные шаги анимации (выбранные пользователем) будет появляться тот или иной объект и они появляются не по порядку, т.е. в зав-ти от индексов 1 и 2, а значит их все равно надо привязывать к этим индексам. Да и как не давать имена DisplayObject? Я еще учусь.... даже не знаю как к ним потом обратиться, без имени то....

А если потом этот пользователь в XML захочет изменить индекс на другой? А это предполагается....

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

Сообщение от wvxvw (Сообщение 863948)
MovieClip - это класс, и существует он всегда, более того, он не может не существотать, т.как встроен в плеер.

Почему-то я думала что MovieClip это частный случай DisplayObject (наследуется от него)

Firexel 07.11.2009 03:22

Цитата:

значит их все равно надо привязывать к этим индексам
Если вы их сложите в массив, то каждый из них будет привязан к собственному индексу в массиве.

kaetano 07.11.2009 03:40

Цитата:

Сообщение от Firexel (Сообщение 863953)
Если вы их сложите в массив, то каждый из них будет привязан к собственному индексу в массиве.

Слава богу это понятно :)
Только у меня не один индекс, а два, и они (идин или оба могут поменяться через неделю).

Чтоб было понятно вкратце - есть основные элементы, между которыми надо показывать линии связи (point), вот насчет них и говорим. На каждом этапе показа свои активные основные элементы, в зав-ти от того кто они такие - показываем определенную стрелку (point), но как уже сказала все может поменяться и надо будет на этом же этапе сделать активными другие элементы, а следовательно и стрелка будет уже не эта.

Для чего мне нужно узнать есть ли такой объект - для страховки от ошибки пользователя.

И все равно не понимаю как не давать элементам (разных визуально) имен и как их потом выискивать в ентом массиве. Даже если я выкручусь и не обзову их - что от этого выиграю?

ПС: теоретически линии связи можно нарисовать программно, но хотелось бы их сделать красивыми, а программно я не умею, но зато сразу же будет проще к ним обращаться. Видимо все идет к тому......

wvxvw 07.11.2009 14:10

Код AS3:

var w:int = 5;
var h:int;
var a:Array = [];
var b:Array;
while (w--)
{
        h = 5;
        b = [];
        a[w] = b;
        while (h--)
        {
                b[h] = new Sprite();
        }
}
 
trace(a.join("\r"));

Ну вот вы создали двухмерный массив содержащий спрайты, зачем вам нужны имена?


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

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