Форум Flasher.ru

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

Atarion 22.08.2011 10:11

как использовать getChildByName из внешнего as?
 
просто написать - getChildByName - естественно не получается. а что надо передать в функцию чтобы корректно искало?
getChildByName - это правильный метод чего?

goodguy 22.08.2011 10:32

А что нужно-то?
Цитата:

getChildByName - естественно не получается
что может быть естественнее

Atarion 22.08.2011 10:38

ну если указать команду
getChildByName("myname");
то пишет: возможно обращение к неопределенной фукнции.

goodguy 22.08.2011 10:46

это "команду" надо вызывать у того контейнера, в котором есть ребенок с именем "myname"

fish_r 22.08.2011 10:49

getChildByName() это метод экр.объекта - наследующего DisplayObjectContainer. Т.е. и MovieClip и Sprite.
и т.д. С его помощью ищут ребенка - отображаемого объекта в таком контейнере. То есть чтобы найти
какой либо объект находящийся внутри контейнера обращаются к его (контейнера) методу getChildByName.
Напр.
Код AS3:

/// находим объект содержащийся в контейнере и 
///присваиваем ссылку на него переменной.
 var myChild:DisplayObject = myMovieClip.getChildByName( "child" );


Atarion 22.08.2011 10:51

я так и думал. сложность в том - что придется передавать этот мови клип - во внешнюю функцию. а если это - главый кадр? можно его как то указать статично - чтобы не передавать?

fish_r 22.08.2011 11:00

в классах пишете или в кадрах?

Atarion 22.08.2011 11:01

есть внешний КЛАСС из внешнего файла .as там надо найти ЭТИМ МЕТОДОМ объект который существует в главном кадре. такая вот задачка.

fish_r 22.08.2011 11:13

Не ферштейн вашей терминологии. Как это внешний? Что это за главный кадр?
Ваш класс какой класс расширяет?
Давайте хоть код посмотрим.

Atarion 22.08.2011 11:17

Код AS3:

package {
 
 
 
public class MyPrivateClass {
 
        public function MyPrivateClass() {
 
        }
 
        public function foo():void {
                здесь надо обратится этой командой к объекту в кадре.
        }
}


goodguy 22.08.2011 11:19

ну еще бы. Этот класс является наследником Object, а не DisplayObjectContainer

нужно хотя бы так:
Код AS3:

package {
 
 
 
public class MyPrivateClass extends Sprite {
 
        public function MyPrivateClass() {
 
        }
 
        public function foo():void {
                здесь надо обратится этой командой к объекту в кадре.
        }
}


Atarion 22.08.2011 11:22

нет, это совершенно не то. как можно из этого места УВИДЕТЬ главный кадр со всеми объектами- чтобы потом НОРМАЛЬНО написать getchildbyname

fish_r 22.08.2011 11:22

Не получится. Ваш класс должен расширять (наследоваться) от MovieClip-a или Sprite. Тогда этот метод в нём будет. А так он, по умолчанию, расширяет object, в нём нет метода getChildByName().
Не знаю какую задачу вы решаете, но вам бы сначала про основы прочитать. Или попросить кого-нибудь за вас её решить...

Atarion 22.08.2011 11:26

а почему у меня метод getDefinitionByName сработал?

fish_r 22.08.2011 11:28

Цитата:

Сообщение от Atarion (Сообщение 1024334)
... пишет: возможно обращение к неопределенной фукнции.

Это он таким образом "сработал"?

Atarion 22.08.2011 11:29

вы в ваших советах ошиблись. дело в том чтобы импортировать верно в функцию тот объект к КОТОРОМУ применим этот метод видимо. какие еще экстенды - это вообще не помогает.

cleptoman 22.08.2011 11:30

потому что это не метод екземпляра класса, а глобальная функция.

Atarion 22.08.2011 11:30

fish_r спасибо. к вам вопросов больше нет. подожду - может кто знающий подскажет.

Добавлено через 1 минуту
клептоман - возможно. но как реально - решить эту задачу? задача такова: манипулировать из внешнего класса объектом с главного кадра, получив его с помощью этой функции.

cleptoman 22.08.2011 11:31

Атарион, я ,в ообще, советовал бы вам немного прислушиваться к советам и понять почему советуют именно это, а не что-либо иное..возможно это послужит вам мотивацией пойти немного почитать базовую теорию программирования на Action Script 3.0

Atarion 22.08.2011 11:36

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

cleptoman 22.08.2011 11:38

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

Atarion 22.08.2011 11:40

а слабо не сказать что либо а показать РЕШЕНИЕ этой задачи? а решение обычно - это код.

Добавлено через 1 минуту
задача: как из внешнего класса, получить объект из главного кадра путем функции getChildByName и не используя extend потому что это тут вообще ни к чему.
предпоалагаю что в фукнцию внешнего класса надо передть ссылку на главнй кадр и вызов из главного кадра будет такой:
myfunction(this)

dimarik 22.08.2011 11:49

Внешний .as файл
Код AS3:

package {
 
        public class VneshniiClass {
 
        public function VneshniiClass() {
                super();
        }
 
        public static function myfunction(value:DisplayObjectContainer):DisplayObject {
                if (value)
                        return value.getChildByName("instanceName");
                return null;
        }
}

В кадре
Код AS3:

const d:DisplayObject = VneshniiClass.myfunction(this);


Atarion 22.08.2011 11:56

спасибо! приду домой - попробую. это как раз то что я и так предполагал. но НЕ ЗНАЛ как сделать. положение усугублялось тем что надо потом эту ссылку "тянуть" в другую функцию. врочем может и обойдусь.
Всегда приятно что где то есть знающие товарищи

fish_r 22.08.2011 12:31

С чего это вы, вдруг, берётесь судить о квалификации людей в деле, в котором сами ничего не соображаете?
Ваша проблема не в локальной задаче "про getChildByName()", а в том, что, исходя из того как вы её описали - вы совершенно не разбираетесь в том, что делаете. Это значит, что либо это эпизодическая необходимость что то сделать во флеше, либо недостаточная подготовленность для решения её. Поэтому вам и советовали либо обратиться за помощью - специалист сделает быстро и "как надо" ( и не обязательно за деньги), либо сесть за книжки, а не спамить на форуме. Причём заметьте - советовали из самых добрых побуждений....
А на досуге ещё и русский письменный язык по-изучайте... и CapsLock почините, что ли.

Atarion 22.08.2011 12:37

в подобных предложениях:
- в котором сами ничего не соображаете
- вы совершенно не разбираетесь в том, что делаете
надо вставлять фразу "по моему мнению" иначе это вообще маразм выходит.

Добавлено через 14 минут
dimarik здача в том чтобы получить ссылку на displayobject во внешней фукнции, внутрни нее. а по этому коду получается что переменная d приобретет значение - в самом же кадре а не во внешнем классе.
кроме того - все равно. проблема В ТОМ чтобы внутри внешнего класса на getchildbyname пишет "обращение к возмжно неопределенному методу"

dimarik 22.08.2011 13:05

Код AS3:

public static function myfunction(value:DisplayObjectContainer):void {
        if (value)
                const d:DisplayObject = value.getChildByName("instanceName");
}


Atarion 22.08.2011 13:18

спасибо! шикарно пошло) модернизировал немного: теперь просто с помощью этой функции определяю "накрепко") глобальную переменную и дальше уже везде ее использую и в ней видны любые объекты кадра

Код AS3:

 public var md:DisplayObjectContainer;
public  function myfunction(value:DisplayObjectContainer):void {
 
 
                md=value;
}


dimarik 22.08.2011 13:22

Очень неплохо. Продолжайте в том же ключе.


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

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