PDA

Просмотр полной версии : как исплоьзовать getChildAt() из другого класса?


Aleksey123
25.11.2006, 17:31
Есть два класса

Первый и второй extends Sprite
В первом создаю мувики, getChildItem работает.
Хочу получить доступ к мувикам первого класса из второго, когда пишу getChildAt ругается:The supplied index is out of bounds, Variable getChildAt is not defined.
Пробовал писать DisplayObjectContainer(root).getChildAt(2);
Что можно сделать?

//А название темы уже подправить нельзя?

Aleksey123
26.11.2006, 00:03
Никто никогда так не делал что ли? Не может быть!

etc
26.11.2006, 00:23
Показывай оба класса и что откуда ты пытаешься получить.

Aleksey123
26.11.2006, 00:54
package{
import flash.display.Sprite;
public var cell:Sprite;
public class Class_1 extends Sprite{


public function Class_1() {
cell=new Cell();
cell.x=x;
cell.y=y;
addChild(cell);
getChildAt(1);//работает
}
}

public class Class_2 extends Sprite{
public function Class_2() {
getChildAt(1); // не работает
}
}

etc
26.11.2006, 01:26
Гм, и не должно работать, в Class_2 нет никаких элементов.

Aleksey123
26.11.2006, 01:28
Так а че делать тогда? если у меня мувик весь в первом классе создан. Как получить доступ к нему?

etc
26.11.2006, 01:47
Можно заюзать parent, можно передавать ссылку, только я не вижу в коде первого класса никакого упоминания о втором.

Aleksey123
26.11.2006, 02:08
Можешь написать пример, если не сложно?

etc
26.11.2006, 02:21
Сложно. Давай ты чуть-чуть будешь мыслить, ок?

Aleksey123
26.11.2006, 02:25
Тебе сложно написать 20 строчек, а писать кому что делать тебе не сложно. Ну что ж твое право. Только выпендриваться не надо с глупыми советами. Если бы я знал как это сделать, я бы здесь не писал. Или у тебя один ответ: "Наверное, стоит открыть хелп, правда?"

etc
26.11.2006, 02:42
Ну тогда жди, пока тебе разжуют и в рот положат или разгоняй мозг.

Нужно уметь конвертировать слова в код.

Если я всем буду писать готовый код, никто даже разбираться не будет в нём, а просто скопипастит и будет двигаться дальше, до следующего затыка, чтобы потом опять попросить написать код, ага.

Aleksey123
26.11.2006, 14:59
Так не работает!
Ошибка:
The supplied index is out of bounds.
at flash.display::DisplayObjectContainer/getChildAt()
at Class_1$iinit()
at myClass3$iinit()


package
{
import flash.display.Sprite;


public class Class_1 extends Sprite{

public var cell:Sprite;

public function Class_1() {
cell=new Cell();
cell.x=x;
cell.y=y;
addChild(cell);
getChildAt(0);
}
}

public class Class_2 extends Sprite{

public function setData(link) {

link.visible = true;

}
}


public class myClass3 extends Sprite{//основной


public function myClass3(){
var a = new Class_1();
var myCell = a.cell;
myCell.visible = false;
var b = new Class_2();
b.setData(myCell);
}


}



}

miramax
26.11.2006, 15:23
Так не работает!
Ошибка:
The supplied index is out of bounds.
at flash.display::DisplayObjectContainer/getChildAt()
at Class_1$iinit()
at myClass3$iinit()
[/code]
Счёт дочерних клипов чедётся с нуля.
getChildAt(0)

Aleksey123
26.11.2006, 15:30
Исправил. но он вообще то не добавляет на экран ничего. ;)

Aleksey123
26.11.2006, 16:28
А ты это пробовал делать?

ALiEN_2006
27.11.2006, 15:59
Странно, мой ответ выкинули, а меня опять забанили... ну я думаю этот банильщик сам понимает что о я онем думаю. И не только я кстати. Нирч, может хватит страдать ерундой?

Aleksey123
27.11.2006, 16:03
:away: А можно все таки узнать как это сделать? тем более если ты уже так делал? то есть код нужен. Может я успею его посмотреть прежде чем тебя снова забанят?

Aleksey123
27.11.2006, 19:19
Решение было найдено!

package{
import flash.display.Sprite;
public var cell:Sprite;
public class Md extends Sprite{

internal static var _class1;

public function Md() {
Md._class1=this;
cell=new Cell();
cell.x=10;
cell.y=10;
this.addChild(cell);
getChildAt(0);
var b:Class_2 = new Class_2();
}
}

public class Class_2 extends Sprite{
public function Class_2() {
trace(Md._class1.getChildAt(0));
Md._class1.getChildAt(1).gotoAndStop(3);
}
}
}



_etc, тебе так сложно было написать internal static var, или ты не знал о таком? :mosking:

miramax
27.11.2006, 21:19
_etc, тебе так сложно было написать internal static var, или ты не знал о таком? :mosking:А сам-то ты знаешь ? :D Может быть ты все объекты так будешь объявлять ? :D

Aleksey123
27.11.2006, 21:46
Что не нравиться в коде? все работает :)

miramax
27.11.2006, 22:09
Что не нравиться в коде? все работает :)
Только в данном частном случае... Вобщем это долго объяснять почему так делать не надо, сам поймёшь со временем.
Лучше передавать ссылки на объекты. Это намного проще.

Aleksey123
27.11.2006, 22:34
А где об этом можно почитать? только в livedocax?

etc
28.11.2006, 01:03
Aleksey123, я такой бред не пишу.

Aleksey123
28.11.2006, 01:06
Так напиши как надо, че ж только все на словах?

etc
28.11.2006, 01:21
Если у тебя нет понятия, что такое «ссылка на объект», то готовый код ты будешь использовать, вообще не понимая, что он делает. Это плохо и не способствует развитию. Надо разбираться в терминах, для начала. Готовый код любой дурак попросить может.

Aleksey123
28.11.2006, 01:29
Если у тебя нет понятия, что такое «ссылка на объект», то готовый код ты будешь использовать, вообще не понимая, что он делает. Это плохо и не способствует развитию. Надо разбираться в терминах, для начала. Готовый код любой дурак попросить может.

Ну опять ты откзываешься написать код, я свою задачу уже решил и без тебя. Очень глупо и тупо думать что если кто-то пишет код то другие просто "копипастят". Это ты по себе судишь?
А форум создан для того чтобы знаниями делиться а не для ... ну ты понял :D Что такое ссылка я знаю, можешь быть спокоен, как использовать разберусь. Спасибо что ты заботишься о развитии посетителей форума, они тебе очень благодарны. Всем бешено приятно слышать "я не напишу этот код, а то ты не поумнеешь :mosking: "
Заботься о себе, а то иногда складывается впечатления что ты пишешь не по делу :mosking:

BlooDHounD
28.11.2006, 14:25
Aleksey123, знаниями с тобой поедлились :) кодом нет. чё переживать то так? когда ты создашь несоклько экземпляров одного и того же класса, когда тебе понадобится в этих экземплярах использовать ссылки на разные клипы, ты поймёшь свою ошибку :)

Aleksey123
28.11.2006, 19:15
BlooDHoundD, твои знания особо полезными оказались!