PDA

Просмотр полной версии : Как вызвать метод объекта из другого объекта?


AlexeiSulga
09.10.2007, 12:57
Не получается обратиться к объекту в parent.

Document class
package {
import flash.display.Sprite;

public class myRoot extends Sprite{
public function myRoot(){
var objA:aClass = new aClass();
objA.name="objA";
addChild(objA);
var objB:bClass = new bClass();
objB.name="objB";
addChild(objB);
}
}
}

aClass.as
package {
import flash.display.Sprite;

public class aClass extends Sprite{
var myProperty:Object = "A";
public function aClass(){
trace("A_object = " + myProperty);
}
public function changeParam(newData:String){
trace("A.myProperty = "+ newData);
}
}
}

bClass.as
package {
import flash.display.Sprite;

public class bClass extends Sprite{
var myProperty:String = "B";
public function bClass(){
parent.getChildAt(0).changeParam(myProperty);
}
}
}

В этой строке вся загвоздка: parent.getChildAt(0).changeParam(myProperty);
что я неправильно делаю?

etc
09.10.2007, 13:01
Неправильно называете классы. Для начала.
А во-вторых, у DisplayObject нет метода changeParam. Необходимо привести полученный спрайт к aClass, т.е. сделать кастинг.

AlexeiSulga
09.10.2007, 13:29
__etc, спасибо... Про названия классов я вкурсе. Essential ActionScript 3.0 уже в пути с амазона.

Сам я дизайнер, пытаюсь перейти с AS1 на AS3. До изучения кастинга еще не дошел. Проблема в том, что даже trace(parent.getChildAt(0)); возврашает null

etc
09.10.2007, 13:33
А потому что на момент вызова конструктора, parent ещё не обозначен.
addChild происходит позже.

2morrowMan
09.10.2007, 17:01
Чтобы было понятней:
ты делаешь:
var objB:bClass = new bClass(); <-- вызываеться конструктор bClass().
В этом конструкторе ты делаешь:
parent.getChildAt(0).changeParam(myProperty);
но parent появляеться только тогда, когда ты делаешь:
addChild(objB);

AlexeiSulga
09.10.2007, 23:38
Тоесть получается что при компиляции swf сперва обрабатываются конструкторы всех классов, а только потом появляется display object. Не подскажите где в хелпе об этом можно подробнее прочитать?

etc
09.10.2007, 23:41
Конструктор — это функция. Она выполняется, когда вы пишете new. После её выполнения уже происходит дальнейшее выполнение кода, appendChild и т.д.