Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   как исплоьзовать getChildAt() из другого класса? (http://www.flasher.ru/forum/showthread.php?t=88546)

Aleksey123 25.11.2006 17:31

как исплоьзовать getChildAt() из другого класса?
 
Есть два класса

Первый и второй 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

Цитата:

Сообщение от Aleksey123
Так не работает!
Ошибка:
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

Цитата:

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

А сам-то ты знаешь ? :D Может быть ты все объекты так будешь объявлять ? :D

Aleksey123 27.11.2006 21:46

Что не нравиться в коде? все работает :)

miramax 27.11.2006 22:09

Цитата:

Сообщение от Aleksey123
Что не нравиться в коде? все работает :)

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

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

Цитата:

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

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

BlooDHounD 28.11.2006 14:25

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

Aleksey123 28.11.2006 19:15

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


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

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